60806040526005805460a060020a61ffff021916905534801561002157600080fd5b5060058054600160a060020a031916339081179091556b033b2e3c9fd0803ce80000006004819055600082815260026020908152604080832084905580519384525191927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929081900390910190a3611ddf8061009f6000396000f3006080604052600436106101c15763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166305d2035b81146101c657806306fdde03146101ef578063095ea7b314610279578063179e91f11461029d57806318160ddd146102d657806323b872dd146102eb5780632e82aaf2146103155780632f6c493c146103335780632ff2e9dc14610354578063313ce567146103695780633f4ba83a1461039457806340c10f19146103ab57806342966c68146103cf5780634b0ee02a146103e75780634cb5465f146104085780635294d0e81461043257806354fd4d50146104565780635c975abb1461046b5780635ca48d8c1461048057806366188463146104a457806370a08231146104c8578063715018a6146104e957806371d66f00146104fe57806379cc6790146105225780637d64bcb41461054657806381fc4d901461055b5780638456cb59146105765780638da5cb5b1461058b57806395d89b41146105bc578063a9059cbb146105d1578063a9dab167146105f5578063ab4a2eb314610610578063d71be8db14610631578063d73dd62314610675578063dd62ed3e14610699578063f2fde38b146106c0575b600080fd5b3480156101d257600080fd5b506101db6106e1565b604080519115158252519081900360200190f35b3480156101fb57600080fd5b50610204610702565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561023e578181015183820152602001610226565b50505050905090810190601f16801561026b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561028557600080fd5b506101db600160a060020a0360043516602435610739565b3480156102a957600080fd5b506102c4600160a060020a0360043516602435604435610766565b60408051918252519081900360200190f35b3480156102e257600080fd5b506102c46107bf565b3480156102f757600080fd5b506101db600160a060020a03600435811690602435166044356107c5565b34801561032157600080fd5b506101db6004356024356044356107f2565b34801561033f57600080fd5b506102c4600160a060020a0360043516610a2c565b34801561036057600080fd5b506102c4610c2a565b34801561037557600080fd5b5061037e610c3a565b6040805160ff9092168252519081900360200190f35b3480156103a057600080fd5b506103a9610c3f565b005b3480156103b757600080fd5b506101db600160a060020a0360043516602435610cb8565b3480156103db57600080fd5b506103a9600435610dc3565b3480156103f357600080fd5b506102c4600160a060020a0360043516610dd0565b34801561041457600080fd5b506101db600160a060020a0360043516602435604435606435610e5f565b34801561043e57600080fd5b506102c4600160a060020a0360043516602435611079565b34801561046257600080fd5b50610204611102565b34801561047757600080fd5b506101db611139565b34801561048c57600080fd5b506102c4600160a060020a0360043516602435611149565b3480156104b057600080fd5b506101db600160a060020a03600435166024356111a2565b3480156104d457600080fd5b506102c4600160a060020a03600435166111c6565b3480156104f557600080fd5b506103a96111e1565b34801561050a57600080fd5b506102c4600160a060020a036004351660243561124f565b34801561052e57600080fd5b506103a9600160a060020a036004351660243561127f565b34801561055257600080fd5b506101db611315565b34801561056757600080fd5b506101db6004356024356113bb565b34801561058257600080fd5b506103a96114d3565b34801561059757600080fd5b506105a0611551565b60408051600160a060020a039092168252519081900360200190f35b3480156105c857600080fd5b50610204611560565b3480156105dd57600080fd5b506101db600160a060020a0360043516602435611597565b34801561060157600080fd5b506101db6004356024356115bb565b34801561061c57600080fd5b506102c4600160a060020a03600435166116ce565b34801561063d57600080fd5b50610655600160a060020a036004351660243561172b565b604080519384526020840192909252151582820152519081900360600190f35b34801561068157600080fd5b506101db600160a060020a0360043516602435611756565b3480156106a557600080fd5b506102c4600160a060020a036004358116906024351661177a565b3480156106cc57600080fd5b506103a9600160a060020a03600435166117a5565b60055474010000000000000000000000000000000000000000900460ff1681565b60408051808201909152600b81527f534341564f20546f6b656e000000000000000000000000000000000000000000602082015281565b60055460009060a860020a900460ff161561075357600080fd5b61075d83836117c5565b90505b92915050565b600160a060020a0383166000908152600160208181526040808420868552909152822001548210156107b85750600160a060020a03831660009081526001602090815260408083208584529091529020545b9392505050565b60045490565b60055460009060a860020a900460ff16156107df57600080fd5b6107ea84848461182b565b949350505050565b600080610805428463ffffffff61199016565b90506108113386611149565b60408051808201909152601581527f546f6b656e7320616c7265616479206c6f636b65640000000000000000000000602082015290156108d25760405160e560020a62461bcd0281526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561089757818101518382015260200161087f565b50505050905090810190601f1680156108c45780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060408051808201909152601381527f416d6f756e742063616e206e6f7420626520300000000000000000000000000060208201528415156109595760405160e560020a62461bcd0281526004018080602001828103825283818151815260200191508051906020019080838360008381101561089757818101518382015260200161087f565b50336000908152600160209081526040808320888452909152902054151561099c5733600090815260208181526040822080546001810182559083529120018590555b6109a63085611597565b5060408051606081018252858152602080820184815260008385018181523380835260018086528784208d855286529287902095518655925191850191909155516002909301805460ff191693151593909317909255825187815290810184905282518893600080516020611d74833981519152928290030190a3506001949350505050565b600080805b600160a060020a038416600090815260208190526040902054811015610b8557600160a060020a03841660009081526020819052604090208054610a8b91869184908110610a7b57fe5b9060005260206000200154611079565b91506000821115610b7d57610aa6838363ffffffff61199016565b600160a060020a0385166000908152600160208181526040808420918490528320805494975091939092919085908110610adc57fe5b60009182526020808320919091015483528281019390935260409182018120600201805460ff191694151594909417909355600160a060020a0387168352908290529020805482908110610b2c57fe5b90600052602060002001546000191684600160a060020a03167f0c35a7765dc80648aa68cb8cf542e73a11500a6e58527cfe7aea2bf7e6b89c87846040518082815260200191505060405180910390a35b600101610a31565b6000831115610c2357604080517fa9059cbb000000000000000000000000000000000000000000000000000000008152600160a060020a0386166004820152602481018590529051309163a9059cbb9160448083019260209291908290030181600087803b158015610bf657600080fd5b505af1158015610c0a573d6000803e3d6000fd5b505050506040513d6020811015610c2057600080fd5b50505b5050919050565b6b033b2e3c9fd0803ce800000081565b601281565b600554600160a060020a03163314610c5657600080fd5b60055460a860020a900460ff161515610c6e57600080fd5b6005805475ff000000000000000000000000000000000000000000191690556040517f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3390600090a1565b600554600090600160a060020a03163314610cd257600080fd5b60055474010000000000000000000000000000000000000000900460ff1615610cfa57600080fd5b600454610d0d908363ffffffff61199016565b600455600160a060020a038316600090815260026020526040902054610d39908363ffffffff61199016565b600160a060020a038416600081815260026020908152604091829020939093558051858152905191927f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d412139688592918290030190a2604080518381529051600160a060020a03851691600091600080516020611d948339815191529181900360200190a350600192915050565b610dcd338261199d565b50565b600080610ddc836111c6565b9150600090505b600160a060020a038316600090815260208190526040902054811015610e5957600160a060020a03831660009081526020819052604090208054610e4f91610e429186919085908110610e3257fe5b9060005260206000200154611149565b839063ffffffff61199016565b9150600101610de3565b50919050565b600080610e72428463ffffffff61199016565b9050610e7e8686611149565b60408051808201909152601581527f546f6b656e7320616c7265616479206c6f636b6564000000000000000000000060208201529015610f035760405160e560020a62461bcd0281526004018080602001828103825283818151815260200191508051906020019080838360008381101561089757818101518382015260200161087f565b5060408051808201909152601381527f416d6f756e742063616e206e6f742062652030000000000000000000000000006020820152841515610f8a5760405160e560020a62461bcd0281526004018080602001828103825283818151815260200191508051906020019080838360008381101561089757818101518382015260200161087f565b50600160a060020a03861660009081526001602090815260408083208884529091529020541515610fdf57600160a060020a038616600090815260208181526040822080546001810182559083529120018590555b610fe93085611597565b506040805160608101825285815260208082018481526000838501818152600160a060020a038c1680835260018086528784208d855286529287902095518655925191850191909155516002909301805460ff191693151593909317909255825187815290810184905282518893600080516020611d74833981519152928290030190a350600195945050505050565b600160a060020a03821660009081526001602081815260408084208585529091528220015442108015906110d45750600160a060020a038316600090815260016020908152604080832085845290915290206002015460ff16155b156107605750600160a060020a03919091166000908152600160209081526040808320938352929052205490565b60408051808201909152600381527f312e330000000000000000000000000000000000000000000000000000000000602082015281565b60055460a860020a900460ff1681565b600160a060020a038216600090815260016020908152604080832084845290915281206002015460ff1615156107605750600160a060020a03919091166000908152600160209081526040808320938352929052205490565b60055460009060a860020a900460ff16156111bc57600080fd5b61075d8383611a8c565b600160a060020a031660009081526002602052604090205490565b600554600160a060020a031633146111f857600080fd5b600554604051600160a060020a03909116907ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482090600090a26005805473ffffffffffffffffffffffffffffffffffffffff19169055565b60006020528160005260406000208181548110151561126a57fe5b90600052602060002001600091509150505481565b600160a060020a03821660009081526003602090815260408083203384529091529020548111156112af57600080fd5b600160a060020a03821660009081526003602090815260408083203384529091529020546112e3908263ffffffff611b7b16565b600160a060020a0383166000908152600360209081526040808320338452909152902055611311828261199d565b5050565b600554600090600160a060020a0316331461132f57600080fd5b60055474010000000000000000000000000000000000000000900460ff161561135757600080fd5b6005805474ff00000000000000000000000000000000000000001916740100000000000000000000000000000000000000001790556040517fae5184fba832cb2b1f702aca6117b8d265eaf03ad33eb133f19dde0f5920fa0890600090a150600190565b6000806113c83385611149565b60408051808201909152601081527f4e6f20746f6b656e73206c6f636b6564000000000000000000000000000000006020820152911061144d5760405160e560020a62461bcd0281526004018080602001828103825283818151815260200191508051906020019080838360008381101561089757818101518382015260200161087f565b506114583083611597565b50336000908152600160209081526040808320868452909152902054611484908363ffffffff61199016565b3360008181526001602081815260408084208985528252928390208581559091015482519485529084015280518693600080516020611d7483398151915292908290030190a350600192915050565b600554600160a060020a031633146114ea57600080fd5b60055460a860020a900460ff161561150157600080fd5b6005805475ff000000000000000000000000000000000000000000191660a860020a1790556040517f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62590600090a1565b600554600160a060020a031681565b60408051808201909152600581527f534341564f000000000000000000000000000000000000000000000000000000602082015281565b60055460009060a860020a900460ff16156115b157600080fd5b61075d8383611b8d565b6000806115c83385611149565b60408051808201909152601081527f4e6f20746f6b656e73206c6f636b6564000000000000000000000000000000006020820152911061164d5760405160e560020a62461bcd0281526004018080602001828103825283818151815260200191508051906020019080838360008381101561089757818101518382015260200161087f565b50336000908152600160208181526040808420878552909152909120015461167b908363ffffffff61199016565b336000818152600160208181526040808420898552825292839020918201859055905482519081529081019390935280518693600080516020611d7483398151915292908290030190a350600192915050565b6000805b600160a060020a038316600090815260208190526040902054811015610e5957600160a060020a0383166000908152602081905260409020805461172191610e429186919085908110610a7b57fe5b91506001016116d2565b6001602081815260009384526040808520909152918352912080549181015460029091015460ff1683565b60055460009060a860020a900460ff161561177057600080fd5b61075d8383611c5c565b600160a060020a03918216600090815260036020908152604080832093909416825291909152205490565b600554600160a060020a031633146117bc57600080fd5b610dcd81611cf5565b336000818152600360209081526040808320600160a060020a038716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a350600192915050565b600160a060020a03831660009081526002602052604081205482111561185057600080fd5b600160a060020a038416600090815260036020908152604080832033845290915290205482111561188057600080fd5b600160a060020a038316151561189557600080fd5b600160a060020a0384166000908152600260205260409020546118be908363ffffffff611b7b16565b600160a060020a0380861660009081526002602052604080822093909355908516815220546118f3908363ffffffff61199016565b600160a060020a038085166000908152600260209081526040808320949094559187168152600382528281203382529091522054611937908363ffffffff611b7b16565b600160a060020a0380861660008181526003602090815260408083203384528252918290209490945580518681529051928716939192600080516020611d94833981519152929181900390910190a35060019392505050565b8181018281101561076057fe5b600160a060020a0382166000908152600260205260409020548111156119c257600080fd5b600160a060020a0382166000908152600260205260409020546119eb908263ffffffff611b7b16565b600160a060020a038316600090815260026020526040902055600454611a17908263ffffffff611b7b16565b600455604080518281529051600160a060020a038416917fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5919081900360200190a2604080518281529051600091600160a060020a03851691600080516020611d948339815191529181900360200190a35050565b336000908152600360209081526040808320600160a060020a0386168452909152812054808310611ae057336000908152600360209081526040808320600160a060020a0388168452909152812055611b15565b611af0818463ffffffff611b7b16565b336000908152600360209081526040808320600160a060020a03891684529091529020555b336000818152600360209081526040808320600160a060020a0389168085529083529281902054815190815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060019392505050565b600082821115611b8757fe5b50900390565b33600090815260026020526040812054821115611ba957600080fd5b600160a060020a0383161515611bbe57600080fd5b33600090815260026020526040902054611bde908363ffffffff611b7b16565b3360009081526002602052604080822092909255600160a060020a03851681522054611c10908363ffffffff61199016565b600160a060020a038416600081815260026020908152604091829020939093558051858152905191923392600080516020611d948339815191529281900390910190a350600192915050565b336000908152600360209081526040808320600160a060020a0386168452909152812054611c90908363ffffffff61199016565b336000818152600360209081526040808320600160a060020a0389168085529083529281902085905580519485525191937f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929081900390910190a350600192915050565b600160a060020a0381161515611d0a57600080fd5b600554604051600160a060020a038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a36005805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03929092169190911790555600d173f98f4a2080eab40a0bff4d9a575753270cb2401c74efdec1feb0ba31b426ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa165627a7a72305820e3a54ce6ab29daeea3286b605acd6ecf69a5f10420ddfe75fed8ab82c1ce14f40029