60806040523480156200001157600080fd5b506040518060400160405280600c81526020016b22b9b1b937bbb2b21022aa2960a11b8152506040518060400160405280600581526020016432b9a2aa2960d91b8152506000828282826000908051906020019062000072929190620002cc565b50815162000088906001906020850190620002cc565b50600480546001600160a01b03191633908117909155620000aa9082620000b6565b50505050505062000414565b6001600160a01b0382166200011d5760405162461bcd60e51b815260206004820152602360248201527f42617365546f6b656e3a206d696e7420746f20746865207a65726f206164647260448201526265737360e81b606482015260840160405180910390fd5b620001288262000209565b6200014481600254620002b760201b62000dec1790919060201c565b6002556001600160a01b0382166000908152600560209081526040909120546200017991839062000dec620002b7821b17901c565b6001600160a01b03831660009081526005602090815260408083209390935560089052205415620001c457620001c081600354620002b760201b62000dec1790919060201c565b6003555b6040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b60005b600754811015620002b3576000600782815481106200022f576200022f62000372565b600091825260209091200154604051635fd6196560e01b81526001600160a01b03858116600483015290911691508190635fd6196590602401600060405180830381600087803b1580156200028357600080fd5b505af115801562000298573d6000803e3d6000fd5b50505050508080620002aa906200039e565b9150506200020c565b5050565b6000620002c58284620003bc565b9392505050565b828054620002da90620003d7565b90600052602060002090601f016020900481019282620002fe576000855562000349565b82601f106200031957805160ff191683800117855562000349565b8280016001018555821562000349579182015b82811115620003495782518255916020019190600101906200032c565b50620003579291506200035b565b5090565b5b808211156200035757600081556001016200035c565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600019821415620003b557620003b562000388565b5060010190565b60008219821115620003d257620003d262000388565b500190565b600181811c90821680620003ec57607f821691505b602082108114156200040e57634e487b7160e01b600052602260045260246000fd5b50919050565b611dfe80620004246000396000f3fe608060405234801561001057600080fd5b50600436106102275760003560e01c80636228907711610130578063a9059cbb116100b8578063cfad57a21161007c578063cfad57a214610529578063dd62ed3e1461053c578063dfbaefb114610575578063e29b2c6a14610582578063fb30d9161461059557600080fd5b8063a9059cbb146104b9578063a923fc40146104cc578063aa271e1a146104df578063af640d0f146104ff578063c93be6361461052057600080fd5b80639554381a116100ff5780639554381a1461045857806395d89b4114610478578063996f11ee146104805780639ce38998146104935780639dc29fac146104a657600080fd5b80636228907714610401578063704802751461041457806370a0823114610427578063817b1cd21461045057600080fd5b806327e235e3116101b357806346ea87af1161018257806346ea87af1461037d57806352cd38d91461039d57806355b6ed5c146103b05780635a47a1a7146103db57806360217267146103ee57600080fd5b806327e235e314610310578063313ce5671461033057806340c10f191461034a578063429b62e51461035d57600080fd5b80631785f53c116101fa5780631785f53c146102ad57806318160ddd146102c05780631e83409a146102d757806323b872dd146102ea578063276eab4e146102fd57600080fd5b806301e336671461022c57806306fdde0314610241578063095ea7b31461025f57806312d43a5114610282575b600080fd5b61023f61023a366004611925565b6105a8565b005b6102496105f4565b604051610256919061198d565b60405180910390f35b61027261026d3660046119c0565b610682565b6040519015158152602001610256565b600454610295906001600160a01b031681565b6040516001600160a01b039091168152602001610256565b61023f6102bb3660046119ea565b610698565b6102c960025481565b604051908152602001610256565b61023f6102e53660046119ea565b6106dc565b6102726102f8366004611925565b6107a8565b61023f61030b366004611a4c565b6107f1565b6102c961031e3660046119ea565b60056020526000908152604090205481565b610338601281565b60405160ff9091168152602001610256565b61023f6103583660046119c0565b61082e565b6102c961036b3660046119ea565b60096020526000908152604090205481565b6102c961038b3660046119ea565b600b6020526000908152604090205481565b6102956103ab366004611af9565b610894565b6102c96103be366004611b12565b600660209081526000928352604080842090915290825290205481565b61023f6103e9366004611b56565b6108be565b6102c96103fc3660046119ea565b6108fb565b61023f61040f3660046119ea565b61093d565b61023f6104223660046119ea565b610a1c565b6102c96104353660046119ea565b6001600160a01b031660009081526005602052604090205490565b6102c9610a63565b6102c96104663660046119ea565b60086020526000908152604090205481565b610249610a81565b61023f61048e366004611b12565b610a8e565b61023f6104a13660046119c0565b610b84565b61023f6104b43660046119c0565b610bca565b6102726104c73660046119c0565b610c30565b61023f6104da366004611be3565b610c3d565b6102c96104ed3660046119ea565b600c6020526000908152604090205481565b60408051808201909152600581526432b9a2aa2960d91b6020820152610249565b6102c960035481565b61023f6105373660046119ea565b610c8e565b6102c961054a366004611b12565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b600a546102729060ff1681565b61023f6105903660046119c0565b610cda565b61023f6105a33660046119ea565b610d20565b6004546001600160a01b031633146105db5760405162461bcd60e51b81526004016105d290611c47565b60405180910390fd5b6105ef6001600160a01b0384168383610df8565b505050565b6000805461060190611c75565b80601f016020809104026020016040519081016040528092919081815260200182805461062d90611c75565b801561067a5780601f1061064f5761010080835404028352916020019161067a565b820191906000526020600020905b81548152906001019060200180831161065d57829003601f168201915b505050505081565b600061068f338484610e4a565b50600192915050565b6004546001600160a01b031633146106c25760405162461bcd60e51b81526004016105d290611c47565b6001600160a01b0316600090815260096020526040812055565b60005b6007548110156107a4576000600782815481106106fe576106fe611cb0565b6000918252602090912001546040516310e059a160e11b81523360048201526001600160a01b038581166024830152909116915081906321c0b34290604401602060405180830381600087803b15801561075757600080fd5b505af115801561076b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061078f9190611cc6565b5050808061079c90611cf5565b9150506106df565b5050565b336000908152600b6020526040812054156107d0576107c8848484610f78565b5060016107ea565b6107db8433846111ef565b6107e6848484610f78565b5060015b9392505050565b6004546001600160a01b0316331461081b5760405162461bcd60e51b81526004016105d290611c47565b80516107a490600790602084019061181b565b336000908152600c602052604090205461088a5760405162461bcd60e51b815260206004820152601c60248201527f4d696e7461626c6542617365546f6b656e3a20666f7262696464656e0000000060448201526064016105d2565b6107a48282611281565b600781815481106108a457600080fd5b6000918252602090912001546001600160a01b0316905081565b6004546001600160a01b031633146108e85760405162461bcd60e51b81526004016105d290611c47565b600a805460ff1916911515919091179055565b6001600160a01b0381166000908152600860205260408120541561092157506000919050565b506001600160a01b031660009081526005602052604090205490565b336000908152600960205260409020546109695760405162461bcd60e51b81526004016105d290611c47565b6001600160a01b038116600090815260086020526040902054156109da5760405162461bcd60e51b815260206004820152602260248201527f42617365546f6b656e3a205f6163636f756e7420616c7265616479206d61726b604482015261195960f21b60648201526084016105d2565b6109e3816113a0565b6001600160a01b0381166000908152600860209081526040808320600190556005909152902054600354610a1691610dec565b60035550565b6004546001600160a01b03163314610a465760405162461bcd60e51b81526004016105d290611c47565b6001600160a01b0316600090815260096020526040902060019055565b6000610a7c60035460025461144190919063ffffffff16565b905090565b6001805461060190611c75565b33600090815260096020526040902054610aba5760405162461bcd60e51b81526004016105d290611c47565b60005b6007548110156105ef57600060078281548110610adc57610adc611cb0565b6000918252602090912001546040516310e059a160e11b81526001600160a01b0386811660048301528581166024830152909116915081906321c0b34290604401602060405180830381600087803b158015610b3757600080fd5b505af1158015610b4b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b6f9190611cc6565b50508080610b7c90611cf5565b915050610abd565b6004546001600160a01b03163314610bae5760405162461bcd60e51b81526004016105d290611c47565b6001600160a01b039091166000908152600c6020526040902055565b336000908152600c6020526040902054610c265760405162461bcd60e51b815260206004820152601c60248201527f4d696e7461626c6542617365546f6b656e3a20666f7262696464656e0000000060448201526064016105d2565b6107a4828261144d565b600061068f338484610f78565b6004546001600160a01b03163314610c675760405162461bcd60e51b81526004016105d290611c47565b8151610c7a906000906020850190611880565b5080516105ef906001906020840190611880565b6004546001600160a01b03163314610cb85760405162461bcd60e51b81526004016105d290611c47565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b6004546001600160a01b03163314610d045760405162461bcd60e51b81526004016105d290611c47565b6001600160a01b039091166000908152600b6020526040902055565b33600090815260096020526040902054610d4c5760405162461bcd60e51b81526004016105d290611c47565b6001600160a01b038116600090815260086020526040902054610db15760405162461bcd60e51b815260206004820152601e60248201527f42617365546f6b656e3a205f6163636f756e74206e6f74206d61726b6564000060448201526064016105d2565b610dba816113a0565b6001600160a01b03811660009081526008602090815260408083208390556005909152902054600354610a1691611441565b60006107ea8284611d10565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526105ef90849061158d565b6001600160a01b038316610eb15760405162461bcd60e51b815260206004820152602860248201527f42617365546f6b656e3a20617070726f76652066726f6d20746865207a65726f604482015267206164647265737360c01b60648201526084016105d2565b6001600160a01b038216610f165760405162461bcd60e51b815260206004820152602660248201527f42617365546f6b656e3a20617070726f766520746f20746865207a65726f206160448201526564647265737360d01b60648201526084016105d2565b6001600160a01b0383811660008181526006602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b038316610fe05760405162461bcd60e51b815260206004820152602960248201527f42617365546f6b656e3a207472616e736665722066726f6d20746865207a65726044820152686f206164647265737360b81b60648201526084016105d2565b6001600160a01b0382166110465760405162461bcd60e51b815260206004820152602760248201527f42617365546f6b656e3a207472616e7366657220746f20746865207a65726f206044820152666164647265737360c81b60648201526084016105d2565b600a5460ff16156110bb57336000908152600b60205260409020546110bb5760405162461bcd60e51b815260206004820152602560248201527f42617365546f6b656e3a206d73672e73656e646572206e6f742077686974656c6044820152641a5cdd195960da1b60648201526084016105d2565b6110c4836113a0565b6110cd826113a0565b61110a816040518060600160405280602a8152602001611d79602a91396001600160a01b0386166000908152600560205260409020549190611662565b6001600160a01b0380851660009081526005602052604080822093909355908416815220546111399082610dec565b6001600160a01b038084166000908152600560209081526040808320949094559186168152600890915220541561117b576003546111779082611441565b6003555b6001600160a01b038216600090815260086020526040902054156111aa576003546111a69082610dec565b6003555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610f6b91815260200190565b6001600160a01b03838116600090815260066020908152604080832093861683529290522054600019811461127b578181101561126e5760405162461bcd60e51b815260206004820152601c60248201527f42617365546f6b656e3a206578636565647320616c6c6f77616e63650000000060448201526064016105d2565b61127b8484848403610e4a565b50505050565b6001600160a01b0382166112e35760405162461bcd60e51b815260206004820152602360248201527f42617365546f6b656e3a206d696e7420746f20746865207a65726f206164647260448201526265737360e81b60648201526084016105d2565b6112ec826113a0565b6002546112f99082610dec565b6002556001600160a01b03821660009081526005602052604090205461131f9082610dec565b6001600160a01b0383166000908152600560209081526040808320939093556008905220541561135a576003546113569082610dec565b6003555b6040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020015b60405180910390a35050565b60005b6007548110156107a4576000600782815481106113c2576113c2611cb0565b600091825260209091200154604051635fd6196560e01b81526001600160a01b03858116600483015290911691508190635fd6196590602401600060405180830381600087803b15801561141557600080fd5b505af1158015611429573d6000803e3d6000fd5b5050505050808061143990611cf5565b9150506113a3565b60006107ea8284611d28565b6001600160a01b0382166114b15760405162461bcd60e51b815260206004820152602560248201527f42617365546f6b656e3a206275726e2066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016105d2565b6114ba826113a0565b6114f781604051806060016040528060268152602001611da3602691396001600160a01b0385166000908152600560205260409020549190611662565b6001600160a01b03831660009081526005602052604090205560025461151d9082611441565b6002556001600160a01b0382166000908152600860205260409020541561154f5760035461154b9082611441565b6003555b6040518181526000906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001611394565b60006115e2826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661168e9092919063ffffffff16565b90508051600014806116035750808060200190518101906116039190611d3f565b6105ef5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016105d2565b600081848411156116865760405162461bcd60e51b81526004016105d2919061198d565b505050900390565b606061169d84846000856116a5565b949350505050565b6060824710156117065760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016105d2565b600080866001600160a01b031685876040516117229190611d5c565b60006040518083038185875af1925050503d806000811461175f576040519150601f19603f3d011682016040523d82523d6000602084013e611764565b606091505b509150915061177587838387611780565b979650505050505050565b606083156117ec5782516117e5576001600160a01b0385163b6117e55760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016105d2565b508161169d565b61169d83838151156118015781518083602001fd5b8060405162461bcd60e51b81526004016105d2919061198d565b828054828255906000526020600020908101928215611870579160200282015b8281111561187057825182546001600160a01b0319166001600160a01b0390911617825560209092019160019091019061183b565b5061187c9291506118f4565b5090565b82805461188c90611c75565b90600052602060002090601f0160209004810192826118ae5760008555611870565b82601f106118c757805160ff1916838001178555611870565b82800160010185558215611870579182015b828111156118705782518255916020019190600101906118d9565b5b8082111561187c57600081556001016118f5565b80356001600160a01b038116811461192057600080fd5b919050565b60008060006060848603121561193a57600080fd5b61194384611909565b925061195160208501611909565b9150604084013590509250925092565b60005b8381101561197c578181015183820152602001611964565b8381111561127b5750506000910152565b60208152600082518060208401526119ac816040850160208701611961565b601f01601f19169190910160400192915050565b600080604083850312156119d357600080fd5b6119dc83611909565b946020939093013593505050565b6000602082840312156119fc57600080fd5b6107ea82611909565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715611a4457611a44611a05565b604052919050565b60006020808385031215611a5f57600080fd5b823567ffffffffffffffff80821115611a7757600080fd5b818501915085601f830112611a8b57600080fd5b813581811115611a9d57611a9d611a05565b8060051b9150611aae848301611a1b565b8181529183018401918481019088841115611ac857600080fd5b938501935b83851015611aed57611ade85611909565b82529385019390850190611acd565b98975050505050505050565b600060208284031215611b0b57600080fd5b5035919050565b60008060408385031215611b2557600080fd5b611b2e83611909565b9150611b3c60208401611909565b90509250929050565b8015158114611b5357600080fd5b50565b600060208284031215611b6857600080fd5b81356107ea81611b45565b600082601f830112611b8457600080fd5b813567ffffffffffffffff811115611b9e57611b9e611a05565b611bb1601f8201601f1916602001611a1b565b818152846020838601011115611bc657600080fd5b816020850160208301376000918101602001919091529392505050565b60008060408385031215611bf657600080fd5b823567ffffffffffffffff80821115611c0e57600080fd5b611c1a86838701611b73565b93506020850135915080821115611c3057600080fd5b50611c3d85828601611b73565b9150509250929050565b6020808252601490820152732130b9b2aa37b5b2b71d103337b93134b23232b760611b604082015260600190565b600181811c90821680611c8957607f821691505b60208210811415611caa57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b600060208284031215611cd857600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b6000600019821415611d0957611d09611cdf565b5060010190565b60008219821115611d2357611d23611cdf565b500190565b600082821015611d3a57611d3a611cdf565b500390565b600060208284031215611d5157600080fd5b81516107ea81611b45565b60008251611d6e818460208701611961565b919091019291505056fe42617365546f6b656e3a207472616e7366657220616d6f756e7420657863656564732062616c616e636542617365546f6b656e3a206275726e20616d6f756e7420657863656564732062616c616e6365a2646970667358221220cb22d1d2b137266d7f0c775d0e9da9fbd58d5bc621d241408d00106e86e0cb0c64736f6c63430008080033