From 1360df2086cb521df7bbd2cddd2c58ed821083f2 Mon Sep 17 00:00:00 2001 From: invocamanman Date: Wed, 18 Jan 2023 12:46:25 +0100 Subject: [PATCH] add tests --- .solcover.js | 3 + compiled-contracts/PolygonZkEVM.json | 4 +- compiled-contracts/PolygonZkEVMBridge.json | 14 ++- .../PolygonZkEVMBridgeMock.json | 14 ++- compiled-contracts/PolygonZkEVMMock.json | 4 +- deployment/genesis-gen.json | 5 +- deployment/genesis.json | 11 +- docker/scripts/genesis_docker.json | 11 +- docker/scripts/genesis_gen_docker.json | 5 +- docs/PolygonZkEVM.md | 2 +- docs/lib/DepositContract.md | 4 +- package.json | 4 +- src/create-genesis.js | 20 +-- test/contracts/proofOfEfficiency.test.js | 114 ++++++++++++++++-- 14 files changed, 155 insertions(+), 60 deletions(-) create mode 100644 .solcover.js diff --git a/.solcover.js b/.solcover.js new file mode 100644 index 0000000..5b58dbf --- /dev/null +++ b/.solcover.js @@ -0,0 +1,3 @@ +module.exports = { + skipFiles: ['mocks', 'interfaces'] +}; \ No newline at end of file diff --git a/compiled-contracts/PolygonZkEVM.json b/compiled-contracts/PolygonZkEVM.json index d911558..1ede9ba 100644 --- a/compiled-contracts/PolygonZkEVM.json +++ b/compiled-contracts/PolygonZkEVM.json @@ -1469,8 +1469,8 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b50615500806100206000396000f3fe608060405234801561001057600080fd5b506004361061032f5760003560e01c80638da5cb5b116101b4578063cfa8ed47116100fa578063e7a7ed021161009d578063e7a7ed021461080e578063e8bf92ed14610828578063eaeb077b1461083b578063edc411211461084e578063f14916d614610861578063f2fde38b14610874578063f851a44014610887578063f8b823e41461089a57600080fd5b8063cfa8ed471461077c578063d02103ca14610796578063d8d1091b146107a9578063d8f54db0146107bc578063d939b315146107d0578063dbc16976146107ea578063e11f3f18146107f2578063e217cfd61461080557600080fd5b8063ab9fc5ef11610162578063ab9fc5ef14610688578063adc879e914610692578063afd23cbe146106ac578063b4d63f58146106d4578063b6b0b09714610734578063c0ed84e01461074e578063c89e42df14610756578063cf1363061461076957600080fd5b80638da5cb5b1461062157806399f5634e146106325780639c9f3dfe1461063a5780639eb831b91461064d5780639f0d039d14610655578063a3c573eb1461065d578063aa58bad61461067057600080fd5b80634a910e6a11610279578063715018a611610227578063715018a61461053b5780637215541a1461054357806375c508b3146105565780637fcb365314610569578063837a47381461057c578063841b24d7146105ea5780638b48931e146106045780638c4a0af71461060e57600080fd5b80634a910e6a146104a75780635392c5e0146104ba578063542028d5146104da57806360943d6a146104e25780636b8616ce146104f55780636ff512cc14610515578063704b6c021461052857600080fd5b8063383b3be8116102e1578063383b3be8146103fa578063394218e91461040d5780633c15826714610420578063423fa85614610433578063456052671461044d578063458c0477146104675780634834a3431461047a5780634a1a89a71461048d57600080fd5b8063107bf28c1461033457806315064c96146103525780631816b7e51461036f57806319d8ac6114610384578063220d7899146103af57806329878983146103c25780632d0889d3146103e2575b600080fd5b61033c6108a3565b6040516103499190614644565b60405180910390f35b60655461035f9060ff1681565b6040519015158152602001610349565b61038261037d36600461465e565b610931565b005b606854610397906001600160401b031681565b6040516001600160401b039091168152602001610349565b61033c6103bd36600461469e565b610a5b565b606a546103d5906001600160a01b031681565b60405161034991906146eb565b6103ec620493e081565b604051908152602001610349565b61035f6104083660046146ff565b610bfc565b61038261041b3660046146ff565b610c43565b61038261042e36600461483c565b610dff565b60685461039790600160401b90046001600160401b031681565b60685461039790600160801b90046001600160401b031681565b607254610397906001600160401b031681565b61038261048836600461497a565b6115c6565b60725461039790600160401b90046001600160401b031681565b6103826104b53660046146ff565b61190f565b6103ec6104c83660046146ff565b606d6020526000908152604090205481565b61033c6119c5565b6103826104f0366004614a1c565b6119d2565b6103ec6105033660046146ff565b60666020526000908152604090205481565b610382610523366004614af3565b611d2d565b610382610536366004614af3565b611dab565b610382611e20565b6103826105513660046146ff565b611e34565b610382610564366004614b10565b61203b565b606954610397906001600160401b031681565b6105bf61058a366004614bae565b6071602052600090815260409020805460018201546002909201546001600160401b0380831693600160401b90930416919084565b604080516001600160401b039586168152949093166020850152918301526060820152608001610349565b60725461039790600160c01b90046001600160401b031681565b61039762093a8081565b61038261061c366004614bd5565b6120ca565b6033546001600160a01b03166103d5565b6103ec612141565b6103826106483660046146ff565b612229565b6103ec600c81565b6074546103ec565b6070546103d5906001600160a01b031681565b6065546103979061010090046001600160401b031681565b6103976206978081565b606c5461039790600160a81b90046001600160401b031681565b6065546106c190600160481b900461ffff1681565b60405161ffff9091168152602001610349565b61070f6106e23660046146ff565b606760205260009081526040902080546001909101546001600160401b0380821691600160401b90041683565b604080519384526001600160401b039283166020850152911690820152606001610349565b6065546103d590600160581b90046001600160a01b031681565b6103976123d7565b610382610764366004614bf2565b612424565b6103826107773660046146ff565b61248a565b6069546103d590600160401b90046001600160a01b031681565b606c546103d5906001600160a01b031681565b6103826107b7366004614c26565b61250b565b606c5461035f90600160a01b900460ff1681565b60725461039790600160801b90046001600160401b031681565b6103826129cb565b610382610800366004614b10565b612a87565b6103976103e881565b60685461039790600160c01b90046001600160401b031681565b606b546103d5906001600160a01b031681565b610382610849366004614d18565b612bcc565b61038261085c36600461497a565b612ef5565b61038261086f366004614af3565b613015565b610382610882366004614af3565b61308a565b6073546103d5906001600160a01b031681565b6103ec60745481565b606f80546108b090614d5c565b80601f01602080910402602001604051908101604052809291908181526020018280546108dc90614d5c565b80156109295780601f106108fe57610100808354040283529160200191610929565b820191906000526020600020905b81548152906001019060200180831161090c57829003601f168201915b505050505081565b6073546001600160a01b031633146109645760405162461bcd60e51b815260040161095b90614d96565b60405180910390fd5b6103e88161ffff161015801561097f57506104008161ffff16105b610a045760405162461bcd60e51b815260206004820152604a60248201527f506f6c79676f6e5a6b45564d3a3a7365744d756c7469706c696572426174636860448201527f4665653a206e65774d756c7469706c696572426174636846656520696e636f72606482015269726563742072616e676560b01b608482015260a40161095b565b6065805461ffff60481b1916600160481b61ffff8416908102919091179091556040519081527f7019933d795eba185c180209e8ae8bffbaa25bcef293364687702c31f4d302c5906020015b60405180910390a150565b6001600160401b03808616600081815260676020526040808220549388168252902054606092911580610a8d57508115155b610b01576040805162461bcd60e51b81526020600482015260248101919091527f506f6c79676f6e5a6b45564d3a3a676574496e707574536e61726b427974657360448201527f3a206f6c64416363496e7075744861736820646f6573206e6f74206578697374606482015260840161095b565b80610b76576040805162461bcd60e51b81526020600482015260248101919091527f506f6c79676f6e5a6b45564d3a3a676574496e707574536e61726b427974657360448201527f3a206e6577416363496e7075744861736820646f6573206e6f74206578697374606482015260840161095b565b606c54604080516001600160601b03193360601b166020820152603481019790975260548701939093526001600160c01b031960c0998a1b81166074880152600160a81b909104891b8116607c870152608486019490945260a485015260c4840194909452509290931b90911660e4830152805180830360cc01815260ec909201905290565b6072546001600160401b0382811660009081526071602052604081205490924292610c3292600160801b90920481169116614def565b6001600160401b0316111592915050565b6073546001600160a01b03163314610c6d5760405162461bcd60e51b815260040161095b90614d96565b62093a806001600160401b0382161115610d065760405162461bcd60e51b815260206004820152604e60248201527f506f6c79676f6e5a6b45564d3a3a73657454727573746564416767726567617460448201527f6f7254696d656f75743a20457863656564206d61782068616c7420616767726560648201526d19d85d1a5bdb881d1a5b595bdd5d60921b608482015260a40161095b565b60655460ff16610da9576072546001600160401b03600160c01b909104811690821610610da95760405162461bcd60e51b8152602060048201526044602482018190527f506f6c79676f6e5a6b45564d3a3a736574547275737465644167677265676174908201527f6f7254696d656f75743a204e65772074696d656f7574206d757374206265206c60648201526337bbb2b960e11b608482015260a40161095b565b607280546001600160c01b0316600160c01b6001600160401b038416908102919091179091556040519081527f1f4fa24c2e4bad19a7f3ec5c5485f70d46c798461c2e684f55bbd0fc661373a190602001610a50565b60655460ff1615610e225760405162461bcd60e51b815260040161095b90614e1a565b606954600160401b90046001600160a01b03163314610ea95760405162461bcd60e51b815260206004820152603a60248201527f506f6c79676f6e5a6b45564d3a3a6f6e6c795472757374656453657175656e6360448201527f65723a204f6e6c7920747275737465642073657175656e636572000000000000606482015260840161095b565b805180610f1e5760405162461bcd60e51b815260206004820152603d60248201527f506f6c79676f6e5a6b45564d3a3a73657175656e6365426174636865733a204160448201527f74206c65617374206d7573742073657175656e63652031206261746368000000606482015260840161095b565b6103e88110610f97576040805162461bcd60e51b81526020600482015260248101919091527f506f6c79676f6e5a6b45564d3a3a73657175656e6365426174636865733a204360448201527f616e6e6f742073657175656e63652074686174206d616e792062617463686573606482015260840161095b565b6068546001600160401b03600160401b82048116600081815260676020526040812054838516949293600160801b90930490921691905b858110156113fc576000878281518110610fea57610fea614e82565b60200260200101519050600081606001516001600160401b0316111561117a578361101481614e98565b94505060008160000151805190602001208260200151836060015160405160200161104193929190614ebe565b60408051601f1981840301815291815281516020928301206001600160401b0388166000908152606690935291205490915081146110d55760405162461bcd60e51b815260206004820152603d60248201526000805160206154ab83398151915260448201527f6f7263656420626174636865732064617461206d757374206d61746368000000606482015260840161095b565b81606001516001600160401b031682604001516001600160401b031610156111745760405162461bcd60e51b815260206004820152605860248201526000805160206154ab83398151915260448201527f6f7263656420626174636865732074696d657374616d70206d757374206265206064820152773134b3b3b2b91037b91032b8bab0b6103a3430b71036b4b760411b608482015260a40161095b565b506112ef565b602081015115806112035750606c5460208201516040516312bd9b1960e11b81526001600160a01b039092169163257b3632916111bd9160040190815260200190565b6020604051808303816000875af11580156111dc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112009190614ee1565b15155b6112755760405162461bcd60e51b815260206004820152603a60248201527f506f6c79676f6e5a6b45564d3a3a73657175656e6365426174636865733a204760448201527f6c6f62616c206578697420726f6f74206d757374206578697374000000000000606482015260840161095b565b805151620493e0116112ef5760405162461bcd60e51b815260206004820152603a60248201527f506f6c79676f6e5a6b45564d3a3a73657175656e6365426174636865733a205460448201527f72616e73616374696f6e73206279746573206f766572666c6f77000000000000606482015260840161095b565b856001600160401b031681604001516001600160401b03161015801561132257504281604001516001600160401b031611155b6113945760405162461bcd60e51b815260206004820152603d60248201527f506f6c79676f6e5a6b45564d3a3a73657175656e6365426174636865733a205460448201527f696d657374616d70206d75737420626520696e736964652072616e6765000000606482015260840161095b565b805180516020918201208183015160408085015190516113bb948894939291339101614efa565b60405160208183030381529060405280519060200120925084806113de90614e98565b955050806040015195505080806113f490614f39565b915050610fce565b506068546001600160401b03600160c01b9091048116908316111561146f5760405162461bcd60e51b815260206004820152603560248201526000805160206154ab8339815191526044820152746f7263652062617463686573206f766572666c6f7760581b606482015260840161095b565b60685460009061148f90600160801b90046001600160401b031684614f52565b6114a2906001600160401b031687614f7a565b60408051606081018252848152426001600160401b03908116602080840191825260688054600160401b9081900485168688019081528c861660008181526067909552979093209551865592516001909501805492519585166001600160801b03199384161795851684029590951790945583548b841691161793029290921767ffffffffffffffff60801b1916600160801b928716929092029190911790556074549091506115779033903090849061155c9190614f91565b606554600160581b90046001600160a01b0316929190613100565b61157f61316b565b606854604051600160401b9091046001600160401b0316907f303446e6a8cb73c83dff421c0b1d5e5ce0719dab1bff13660fc254e58cc17fce90600090a250505050505050565b60655460ff16156115e95760405162461bcd60e51b815260040161095b90614e1a565b6072546001600160401b03878116600090815260676020526040902060010154429261162092600160c01b90910481169116614def565b6001600160401b031611156116a95760405162461bcd60e51b815260206004820152604360248201527f506f6c79676f6e5a6b45564d3a3a766572696679426174636865733a2054727560448201527f737465642061676772656761746f722074696d656f7574206e6f7420657870696064820152621c995960ea1b608482015260a40161095b565b6103e86116b68888614f52565b6001600160401b0316106117325760405162461bcd60e51b815260206004820152603c60248201527f506f6c79676f6e5a6b45564d3a3a766572696679426174636865733a2043616e60448201527f6e6f74207665726966792074686174206d616e79206261746368657300000000606482015260840161095b565b611742888888888888888861320f565b61174b86613712565b607254600160801b90046001600160401b0316600003611813576069805467ffffffffffffffff19166001600160401b038881169182179092556000908152606d6020526040902085905560725416156117b057607280546001600160801b03191690555b606c546040516333d6247d60e01b8152600481018790526001600160a01b03909116906333d6247d90602401600060405180830381600087803b1580156117f657600080fd5b505af115801561180a573d6000803e3d6000fd5b505050506118c4565b61181b61316b565b607280546001600160401b031690600061183483614e98565b82546001600160401b039182166101009390930a92830292820219169190911790915560408051608081018252428316815289831660208083019182528284018b8152606084018b8152607254871660009081526071909352949091209251835492518616600160401b026001600160801b03199093169516949094171781559151600183015551600290910155505b60405184815233906001600160401b038816907f9c72852172521097ba7e1482e6b44b351323df0155f97f4ea18fcec28e1f5966906020015b60405180910390a35050505050505050565b606a546001600160a01b031633146119b95761192a81610bfc565b6119b95760405162461bcd60e51b815260206004820152605460248201527f506f6c79676f6e5a6b45564d3a3a636f6e736f6c696461746550656e64696e6760448201527f53746174653a2050656e64696e67207374617465206973206e6f7420726561646064820152731e481d1bc818994818dbdb9cdbdb1a59185d195960621b608482015260a40161095b565b6119c2816138f8565b50565b606e80546108b090614d5c565b600054610100900460ff16158080156119f25750600054600160ff909116105b80611a0c5750303b158015611a0c575060005460ff166001145b611a6f5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161095b565b6000805460ff191660011790558015611a92576000805461ff0019166101001790555b606c80546001600160a01b03199081166001600160a01b038c81169190911790925560658054600160581b600160f81b031916600160581b8c851602179055606b805482168a841617905560708054909116918816919091179055611afa6020860186614af3565b607380546001600160a01b0319166001600160a01b0392909216919091179055611b2a6060860160408701614af3565b606980546001600160a01b0392909216600160401b02600160401b600160e01b0319909216919091179055611b6560c0860160a08701614af3565b606a80546001600160a01b0319166001600160a01b039290921691909117905560008052606d6020527fda90043ba5b4096ba14704bc227ab0d3167da15b887e62ab2e76e37daa711356849055611bc260e0860160c087016146ff565b607280546001600160401b0392909216600160c01b026001600160c01b03909216919091179055611bf960408601602087016146ff565b606c80546001600160401b0392909216600160a81b0267ffffffffffffffff60a81b19909216919091179055611c3560808601606087016146ff565b607280546001600160401b0392909216600160801b0267ffffffffffffffff60801b19909216919091179055611c7160a0860160808701614bd5565b606c8054911515600160a01b0260ff60a01b19909216919091179055606e611c998482614ff6565b50606f611ca68382614ff6565b50670de0b6b3a7640000607455606580546affffffffffffffffffff0019166a03ea000000000000070800179055611cdc613add565b8015611d22576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050565b6073546001600160a01b03163314611d575760405162461bcd60e51b815260040161095b90614d96565b60698054600160401b600160e01b031916600160401b6001600160a01b038416021790556040517ff54144f9611984021529f814a1cb6a41e22c58351510a0d9f7e822618abb9cc090610a509083906146eb565b6073546001600160a01b03163314611dd55760405162461bcd60e51b815260040161095b90614d96565b607380546001600160a01b0319166001600160a01b0383161790556040517f5a272403b402d892977df56625f4164ccaf70ca3863991c43ecfe76a6905b0a190610a509083906146eb565b611e28613b51565b611e326000613bab565b565b6033546001600160a01b03163314612033576000611e506123d7565b9050806001600160401b0316826001600160401b031611611ec75760405162461bcd60e51b815260206004820152603c602482015260008051602061542b83398151915260448201527f746174653a20426174636820616c726561647920766572696669656400000000606482015260840161095b565b6068546001600160401b03600160401b909104811690831611801590611f0957506001600160401b038083166000908152606760205260409020600101541615155b611f825760405162461bcd60e51b8152602060048201526050602482015260008051602061542b83398151915260448201527f746174653a204261746368206e6f742073657175656e636564206f72206e6f7460648201526f20656e64206f662073657175656e636560801b608482015260a40161095b565b6001600160401b038083166000908152606760205260409020600101544291611fb09162093a809116614def565b6001600160401b031611156120315760405162461bcd60e51b815260206004820152604d602482015260008051602061542b83398151915260448201527f746174653a204167677265676174696f6e2068616c742074696d656f7574206960648201526c1cc81b9bdd08195e1c1a5c9959609a1b608482015260a40161095b565b505b6119c2613bfd565b60655460ff161561205e5760405162461bcd60e51b815260040161095b90614e1a565b61206f898989898989898989613c6d565b6001600160401b0386166000908152606d60209081526040918290205482519081529081018690527f1f44c21118c4603cfb4e1b621dbcfa2b73efcececee2b99b620b2953d33a7010910160405180910390a1611d22613bfd565b6073546001600160a01b031633146120f45760405162461bcd60e51b815260040161095b90614d96565b606c8054821515600160a01b0260ff60a01b199091161790556040517fbacda50a4a8575be1d91a7ebe29ee45056f3a94f12a2281eb6b43afa33bcefe690610a5090831515815260200190565b6065546040516370a0823160e01b81526000918291600160581b9091046001600160a01b0316906370a082319061217c9030906004016146eb565b602060405180830381865afa158015612199573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121bd9190614ee1565b905060006121c96123d7565b6068546001600160401b03600160401b82048116916121f991600160801b8204811691600160c01b900416614f52565b6122039190614def565b61220d9190614f52565b6001600160401b0316905061222281836150cb565b9250505090565b6073546001600160a01b031633146122535760405162461bcd60e51b815260040161095b90614d96565b62093a806001600160401b03821611156122e75760405162461bcd60e51b815260206004820152604960248201527f506f6c79676f6e5a6b45564d3a3a73657450656e64696e67537461746554696d60448201527f656f75743a20457863656564206d61782068616c74206167677265676174696f6064820152681b881d1a5b595bdd5d60ba1b608482015260a40161095b565b60655460ff1661237c576072546001600160401b03600160801b90910481169082161061237c5760405162461bcd60e51b815260206004820152603f60248201527f506f6c79676f6e5a6b45564d3a3a73657450656e64696e67537461746554696d60448201527f656f75743a204e65772074696d656f7574206d757374206265206c6f77657200606482015260840161095b565b6072805467ffffffffffffffff60801b1916600160801b6001600160401b038416908102919091179091556040519081527fc4121f4e22c69632ebb7cf1f462be0511dc034f999b52013eddfb24aab765c7590602001610a50565b6072546000906001600160401b03161561241457506072546001600160401b03908116600090815260716020526040902054600160401b90041690565b506069546001600160401b031690565b6073546001600160a01b0316331461244e5760405162461bcd60e51b815260040161095b90614d96565b606e61245a8282614ff6565b507f6b8f723a4c7a5335cafae8a598a0aa0301be1387c037dccc085b62add6448b2081604051610a509190614644565b6073546001600160a01b031633146124b45760405162461bcd60e51b815260040161095b90614d96565b6065805468ffffffffffffffff0019166101006001600160401b038416908102919091179091556040519081527f03a12f7e53d2a9e31a9e913d85c12c4c38feb92abe003c111329298af088437f90602001610a50565b60655460ff161561252e5760405162461bcd60e51b815260040161095b90614e1a565b606c54600160a01b900460ff16151560011461255c5760405162461bcd60e51b815260040161095b906150df565b8051806125bf5760405162461bcd60e51b815260206004820152603f602482015260008051602061548b83398151915260448201527f65733a204d75737420666f726365206174206c65617374203120626174636800606482015260840161095b565b6103e881106126305760405162461bcd60e51b8152602060048201526043602482015260008051602061548b83398151915260448201527f65733a2043616e6e6f74207665726966792074686174206d616e79206261746360648201526268657360e81b608482015260a40161095b565b6068546001600160401b03600160c01b8204811691612658918491600160801b900416615148565b11156126b45760405162461bcd60e51b8152602060048201526037602482015260008051602061548b833981519152604482015276195cce88119bdc98d94818985d18da081a5b9d985b1a59604a1b606482015260840161095b565b6068546001600160401b03600160401b820481166000818152606760205260408120549193600160801b9004909216915b848110156128e257600086828151811061270157612701614e82565b60200260200101519050838061271690614e98565b94505060008160000151805190602001208260200151836040015160405160200161274393929190614ebe565b60408051601f1981840301815291815281516020928301206001600160401b0388166000908152606690935291205490915081146127e25760405162461bcd60e51b8152602060048201526042602482015260008051602061548b83398151915260448201527f65733a20466f7263656420626174636865732064617461206d757374206d61746064820152610c6d60f31b608482015260a40161095b565b6127ed600188614f7a565b830361288457426206978083604001516128079190614def565b6001600160401b031611156128845760405162461bcd60e51b8152602060048201526049602482015260008051602061548b83398151915260448201527f65733a20466f72636564206261746368206973206e6f7420696e2074696d656f6064820152681d5d081c195c9a5bd960ba1b608482015260a40161095b565b81518051602091820120818401516040516128a793889392914291339101614efa565b60405160208183030381529060405280519060200120935085806128ca90614e98565b965050505080806128da90614f39565b9150506126e5565b506068805467ffffffffffffffff1916426001600160401b03908116918217808455604080516060810182528681526020808201958652600160401b9384900485168284019081528a861660008181526067909352848320935184559651600193909301805491519387166001600160801b0319909216919091179286168502929092179091558554600160401b600160c01b03191694830267ffffffffffffffff60801b191694909417600160801b88851602179485905551930416917f648a61dd2438f072f5a1960939abd30f37aea80d2e94c9792ad142d3e0a490a49190a25050505050565b60655460ff166129ed5760405162461bcd60e51b815260040161095b90615160565b6073546001600160a01b03163314612a175760405162461bcd60e51b815260040161095b90614d96565b607060009054906101000a90046001600160a01b03166001600160a01b031663dbc169766040518163ffffffff1660e01b8152600401600060405180830381600087803b158015612a6757600080fd5b505af1158015612a7b573d6000803e3d6000fd5b50505050611e326142a3565b606a546001600160a01b03163314612ab15760405162461bcd60e51b815260040161095b906151bd565b612ac2898989898989898989613c6d565b6069805467ffffffffffffffff19166001600160401b038881169182179092556000908152606d602052604090208590556072541615612b0d57607280546001600160801b03191690555b606c546040516333d6247d60e01b8152600481018790526001600160a01b03909116906333d6247d90602401600060405180830381600087803b158015612b5357600080fd5b505af1158015612b67573d6000803e3d6000fd5b5050607280546001600160c01b031661127560c71b179055505060405184815233906001600160401b038816907fcc1b5520188bf1dd3e63f98164b577c4d75c11a619ddea692112f0d1aec4cf729060200160405180910390a3505050505050505050565b60655460ff1615612bef5760405162461bcd60e51b815260040161095b90614e1a565b606c54600160a01b900460ff161515600114612c1d5760405162461bcd60e51b815260040161095b906150df565b6000612c2860745490565b905081811115612c8d5760405162461bcd60e51b815260206004820152602a60248201527f506f6c79676f6e5a6b45564d3a3a666f72636542617463683a204e6f7420656e6044820152696f756768206d6174696360b01b606482015260840161095b565b620493e0835110612cfe5760405162461bcd60e51b815260206004820152603560248201527f506f6c79676f6e5a6b45564d3a3a666f72636542617463683a205472616e73616044820152746374696f6e73206279746573206f766572666c6f7760581b606482015260840161095b565b606554612d1d90600160581b90046001600160a01b0316333084613100565b606c5460408051633ed691ef60e01b815290516000926001600160a01b031691633ed691ef9160048083019260209291908290030181865afa158015612d67573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d8b9190614ee1565b60688054919250600160c01b9091046001600160401b0316906018612daf83614e98565b91906101000a8154816001600160401b0302191690836001600160401b031602179055505083805190602001208142604051602001612df093929190614ebe565b60408051808303601f190181529181528151602092830120606854600160c01b90046001600160401b031660009081526066909352912055323303612e9457606854604080518381523360208201526060918101829052600091810191909152600160c01b9091046001600160401b0316907ff94bb37db835f1ab585ee00041849a09b12cd081d77fa15ca070757619cbc9319060800160405180910390a2612eef565b606860189054906101000a90046001600160401b03166001600160401b03167ff94bb37db835f1ab585ee00041849a09b12cd081d77fa15ca070757619cbc931823387604051612ee69392919061521a565b60405180910390a25b50505050565b606a546001600160a01b03163314612f1f5760405162461bcd60e51b815260040161095b906151bd565b612f2f888888888888888861320f565b6069805467ffffffffffffffff19166001600160401b038881169182179092556000908152606d602052604090208590556072541615612f7a57607280546001600160801b03191690555b606c546040516333d6247d60e01b8152600481018790526001600160a01b03909116906333d6247d90602401600060405180830381600087803b158015612fc057600080fd5b505af1158015612fd4573d6000803e3d6000fd5b50506040518681523392506001600160401b03891691507f0c0ce073a7d7b5850c04ccc4b20ee7d3179d5f57d0ac44399565792c0f72fce7906020016118fd565b6073546001600160a01b0316331461303f5760405162461bcd60e51b815260040161095b90614d96565b606a80546001600160a01b0319166001600160a01b0383161790556040517f61f8fec29495a3078e9271456f05fb0707fd4e41f7661865f80fc437d06681ca90610a509083906146eb565b613092613b51565b6001600160a01b0381166130f75760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161095b565b6119c281613bab565b6040516001600160a01b0380851660248301528316604482015260648101829052612eef9085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526142fa565b6072546001600160401b03600160401b8204811691161115611e32576072546000906131a890600160401b90046001600160401b03166001614def565b90506131b381610bfc565b156119c2576072546000906002906131d59084906001600160401b0316614f52565b6131df919061524d565b6131e99083614def565b90506131f481610bfc565b1561320657613202816138f8565b5050565b613202826138f8565b60008061321a6123d7565b90506001600160401b038a1615613380576072546001600160401b03908116908b1611156132d25760405162461bcd60e51b815260206004820152605960248201527f506f6c79676f6e5a6b45564d3a3a5f766572696679426174636865733a20706560448201527f6e64696e6753746174654e756d206d757374206265206c657373206f7220657160648201527875616c207468616e206c61737450656e64696e67537461746560381b608482015260a40161095b565b6001600160401b03808b1660009081526071602052604090206002810154815490945090918b8116600160401b909204161461337a5760405162461bcd60e51b815260206004820152604d602482015260008051602061544b83398151915260448201527f69744e756d4261746368206d757374206d61746368207468652070656e64696e60648201526c0ce40e6e8c2e8ca40c4c2e8c6d609b1b608482015260a40161095b565b506134a6565b6001600160401b0389166000908152606d602052604090205491508161340a5760405162461bcd60e51b81526020600482015260446024820181905260008051602061544b833981519152908201527f69744e756d426174636820737461746520726f6f7420646f6573206e6f7420656064820152631e1a5cdd60e21b608482015260a40161095b565b806001600160401b0316896001600160401b031611156134a65760405162461bcd60e51b815260206004820152605e602482015260008051602061544b83398151915260448201527f69744e756d4261746368206d757374206265206c657373206f7220657175616c60648201527f207468616e2063757272656e744c617374566572696669656442617463680000608482015260a40161095b565b806001600160401b0316886001600160401b03161161354e5760405162461bcd60e51b815260206004820152605860248201527f506f6c79676f6e5a6b45564d3a3a5f766572696679426174636865733a20666960448201527f6e616c4e65774261746368206d75737420626520626967676572207468616e206064820152770c6eae4e4cadce898c2e6e8accae4d2ccd2cac884c2e8c6d60431b608482015260a40161095b565b600061355d8a8a8a868b610a5b565b905060007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000016002836040516135929190615273565b602060405180830381855afa1580156135af573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906135d29190614ee1565b6135dc919061528f565b606b546040805160208101825283815290516343753b4d60e01b81529293506001600160a01b03909116916343753b4d91613620918b918b918b91906004016152a3565b602060405180830381865afa15801561363d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613661919061531d565b6136c15760405162461bcd60e51b815260206004820152602b60248201527f506f6c79676f6e5a6b45564d3a3a5f766572696679426174636865733a20496e60448201526a3b30b634b210383937b7b360a91b606482015260840161095b565b613704336136cf858d614f52565b6001600160401b03166136e0612141565b6136ea9190614f91565b606554600160581b90046001600160a01b031691906143d1565b505050505050505050505050565b600061371c6123d7565b90508160008061372c8484614f52565b6001600160401b031690505b836001600160401b0316836001600160401b0316146137de576001600160401b03808416600090815260676020526040902060655460018201549192610100909104811691613788911642614f7a565b11156137c35760018101546137ad90600160401b90046001600160401b031685614f52565b6137c0906001600160401b031684615148565b92505b60010154600160401b90046001600160401b03169250613738565b60006137ea8383614f7a565b9050828110156138645760006138008285614f7a565b9050600c81116138105780613813565b600c5b9050613820816003614f91565b61382b90600a61541e565b606554613844908390600160481b900461ffff1661541e565b6074546138519190614f91565b61385b91906150cb565b607455506138f0565b60006138708483614f7a565b9050600c81116138805780613883565b600c5b90506000613892826003614f91565b61389d90600a61541e565b6065546138b6908490600160481b900461ffff1661541e565b6074546138c39190614f91565b6138cd91906150cb565b9050806074546074546138e09190614f91565b6138ea91906150cb565b60745550505b505050505050565b6001600160401b0381161580159061392557506072546001600160401b03600160401b9091048116908216115b801561394057506072546001600160401b0390811690821611155b6139b25760405162461bcd60e51b815260206004820152603f60248201527f506f6c79676f6e5a6b45564d3a3a5f636f6e736f6c696461746550656e64696e60448201527f6753746174653a2070656e64696e6753746174654e756d20696e76616c696400606482015260840161095b565b6001600160401b038181166000818152607160209081526040808320805460698054600160401b9283900490981667ffffffffffffffff19909816881790556002820154878652606d90945293829020929092556072805467ffffffffffffffff60401b19169390940292909217909255606c54600183015491516333d6247d60e01b815260048101929092529192916001600160a01b0316906333d6247d90602401600060405180830381600087803b158015613a6f57600080fd5b505af1158015613a83573d6000803e3d6000fd5b50505050826001600160401b0316816001600160401b03167f328d3c6c0fd6f1be0515e422f2d87e59f25922cbc2233568515a0c4bc3f8510e8460020154604051613ad091815260200190565b60405180910390a3505050565b600054610100900460ff16613b485760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b606482015260840161095b565b611e3233613bab565b6033546001600160a01b03163314611e325760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161095b565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b607060009054906101000a90046001600160a01b03166001600160a01b0316632072f6c56040518163ffffffff1660e01b8152600401600060405180830381600087803b158015613c4d57600080fd5b505af1158015613c61573d6000803e3d6000fd5b50505050611e32614401565b60006001600160401b038a1615613ddd576072546001600160401b03908116908b161115613d255760405162461bcd60e51b8152602060048201526065602482015260008051602061546b83398151915260448201527f696e6753746174653a2070656e64696e6753746174654e756d206d757374206260648201527f65206c657373206f7220657175616c207468616e206c61737450656e64696e67608482015264537461746560d81b60a482015260c40161095b565b506001600160401b03808a1660009081526071602052604090206002810154815490928a8116600160401b9092041614613dd75760405162461bcd60e51b8152602060048201526059602482015260008051602061546b83398151915260448201527f696e6753746174653a20696e69744e756d4261746368206d757374206d6174636064820152780d040e8d0ca40e0cadcc8d2dcce40e6e8c2e8ca40c4c2e8c6d603b1b608482015260a40161095b565b50613f16565b506001600160401b0387166000908152606d602052604090205480613e715760405162461bcd60e51b8152602060048201526050602482015260008051602061546b83398151915260448201527f696e6753746174653a20696e69744e756d426174636820737461746520726f6f60648201526f1d08191bd95cc81b9bdd08195e1a5cdd60821b608482015260a40161095b565b6069546001600160401b039081169089161115613f165760405162461bcd60e51b8152602060048201526063602482015260008051602061546b83398151915260448201527f696e6753746174653a20696e69744e756d4261746368206d757374206265206c60648201527f657373206f7220657175616c207468616e206c617374566572696669656442616084820152620e8c6d60eb1b60a482015260c40161095b565b6072546001600160401b03908116908a1611801590613f465750896001600160401b0316896001600160401b0316115b8015613f6757506072546001600160401b03600160401b9091048116908a16115b613fd85760405162461bcd60e51b8152602060048201526048602482015260008051602061546b83398151915260448201527f696e6753746174653a2066696e616c50656e64696e6753746174654e756d20696064820152671b98dbdc9c9958dd60c21b608482015260a40161095b565b6001600160401b03898116600090815260716020526040902054600160401b90048116908816146140915760405162461bcd60e51b8152602060048201526063602482015260008051602061546b83398151915260448201527f696e6753746174653a2066696e616c4e65774261746368206d7573742062652060648201527f657175616c207468616e2063757272656e744c617374566572696669656442616084820152620e8c6d60eb1b60a482015260c40161095b565b60006140a0898989858a610a5b565b905060007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000016002836040516140d59190615273565b602060405180830381855afa1580156140f2573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906141159190614ee1565b61411f919061528f565b606b546040805160208101825283815290516343753b4d60e01b81529293506001600160a01b03909116916343753b4d91614163918a918a918a91906004016152a3565b602060405180830381865afa158015614180573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141a4919061531d565b6141fe5760405162461bcd60e51b8152602060048201526037602482015260008051602061546b83398151915260448201527634b733a9ba30ba329d1024b73b30b634b210383937b7b360491b606482015260840161095b565b6001600160401b038b166000908152607160205260409020600201548790036137045760405162461bcd60e51b815260206004820152605b602482015260008051602061546b83398151915260448201527f696e6753746174653a2053746f72656420726f6f74206d75737420626520646960648201527f66666572656e74207468616e206e657720737461746520726f6f740000000000608482015260a40161095b565b60655460ff166142c55760405162461bcd60e51b815260040161095b90615160565b6065805460ff191690556040517f1e5e34eea33501aecf2ebec9fe0e884a40804275ea7fe10b2ba084c8374308b390600090a1565b600061434f826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661445c9092919063ffffffff16565b8051909150156143cc578080602001905181019061436d919061531d565b6143cc5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840161095b565b505050565b6040516001600160a01b0383166024820152604481018290526143cc90849063a9059cbb60e01b90606401613134565b60655460ff16156144245760405162461bcd60e51b815260040161095b90614e1a565b6065805460ff191660011790556040517f2261efe5aef6fedc1fd1550b25facc9181745623049c7901287030b9ad1a549790600090a1565b606061446b8484600085614473565b949350505050565b6060824710156144d45760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b606482015260840161095b565b600080866001600160a01b031685876040516144f09190615273565b60006040518083038185875af1925050503d806000811461452d576040519150601f19603f3d011682016040523d82523d6000602084013e614532565b606091505b50915091506145438783838761454e565b979650505050505050565b606083156145bd5782516000036145b6576001600160a01b0385163b6145b65760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161095b565b508161446b565b61446b83838151156145d25781518083602001fd5b8060405162461bcd60e51b815260040161095b9190614644565b60005b838110156146075781810151838201526020016145ef565b83811115612eef5750506000910152565b600081518084526146308160208601602086016145ec565b601f01601f19169290920160200192915050565b6020815260006146576020830184614618565b9392505050565b60006020828403121561467057600080fd5b813561ffff8116811461465757600080fd5b80356001600160401b038116811461469957600080fd5b919050565b600080600080600060a086880312156146b657600080fd5b6146bf86614682565b94506146cd60208701614682565b94979496505050506040830135926060810135926080909101359150565b6001600160a01b0391909116815260200190565b60006020828403121561471157600080fd5b61465782614682565b634e487b7160e01b600052604160045260246000fd5b604051608081016001600160401b03811182821017156147525761475261471a565b60405290565b604051606081016001600160401b03811182821017156147525761475261471a565b604051601f8201601f191681016001600160401b03811182821017156147a2576147a261471a565b604052919050565b60006001600160401b038211156147c3576147c361471a565b5060051b60200190565b600082601f8301126147de57600080fd5b81356001600160401b038111156147f7576147f761471a565b61480a601f8201601f191660200161477a565b81815284602083860101111561481f57600080fd5b816020850160208301376000918101602001919091529392505050565b6000602080838503121561484f57600080fd5b82356001600160401b038082111561486657600080fd5b818501915085601f83011261487a57600080fd5b813561488d614888826147aa565b61477a565b81815260059190911b830184019084810190888311156148ac57600080fd5b8585015b83811015614945578035858111156148c85760008081fd5b86016080818c03601f19018113156148e05760008081fd5b6148e8614730565b89830135888111156148fa5760008081fd5b6149088e8c838701016147cd565b8252506040808401358b8301526060614922818601614682565b82840152614931848601614682565b9083015250855250509186019186016148b0565b5098975050505050505050565b806040810183101561496357600080fd5b92915050565b806080810183101561496357600080fd5b6000806000806000806000806101a0898b03121561499757600080fd5b6149a089614682565b97506149ae60208a01614682565b96506149bc60408a01614682565b955060608901359450608089013593506149d98a60a08b01614952565b92506149e88a60e08b01614969565b91506149f88a6101608b01614952565b90509295985092959890939650565b6001600160a01b03811681146119c257600080fd5b600080600080600080600080888a036101c0811215614a3a57600080fd5b8935614a4581614a07565b985060208a0135614a5581614a07565b975060408a0135614a6581614a07565b965060608a0135614a7581614a07565b955060e0607f1982011215614a8957600080fd5b5060808901935061016089013592506101808901356001600160401b0380821115614ab357600080fd5b614abf8c838d016147cd565b93506101a08b0135915080821115614ad657600080fd5b50614ae38b828c016147cd565b9150509295985092959890939650565b600060208284031215614b0557600080fd5b813561465781614a07565b60008060008060008060008060006101c08a8c031215614b2f57600080fd5b614b388a614682565b9850614b4660208b01614682565b9750614b5460408b01614682565b9650614b6260608b01614682565b955060808a0135945060a08a01359350614b7f8b60c08c01614952565b9250614b8f8b6101008c01614969565b9150614b9f8b6101808c01614952565b90509295985092959850929598565b600060208284031215614bc057600080fd5b5035919050565b80151581146119c257600080fd5b600060208284031215614be757600080fd5b813561465781614bc7565b600060208284031215614c0457600080fd5b81356001600160401b03811115614c1a57600080fd5b61446b848285016147cd565b60006020808385031215614c3957600080fd5b82356001600160401b0380821115614c5057600080fd5b818501915085601f830112614c6457600080fd5b8135614c72614888826147aa565b81815260059190911b83018401908481019088831115614c9157600080fd5b8585015b8381101561494557803585811115614cad5760008081fd5b86016060818c03601f1901811315614cc55760008081fd5b614ccd614758565b8983013588811115614cdf5760008081fd5b614ced8e8c838701016147cd565b8252506040808401358b830152614d05838501614682565b9082015285525050918601918601614c95565b60008060408385031215614d2b57600080fd5b82356001600160401b03811115614d4157600080fd5b614d4d858286016147cd565b95602094909401359450505050565b600181811c90821680614d7057607f821691505b602082108103614d9057634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526023908201527f506f6c79676f6e5a6b45564d3a3a6f6e6c7941646d696e3a204f6e6c7920616460408201526236b4b760e91b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b60006001600160401b03808316818516808303821115614e1157614e11614dd9565b01949350505050565b60208082526042908201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960408201527f53746174653a206f6e6c79206966206e6f7420656d657267656e637920737461606082015261746560f01b608082015260a00190565b634e487b7160e01b600052603260045260246000fd5b60006001600160401b03808316818103614eb457614eb4614dd9565b6001019392505050565b928352602083019190915260c01b6001600160c01b031916604082015260480190565b600060208284031215614ef357600080fd5b5051919050565b9485526020850193909352604084019190915260c01b6001600160c01b0319166060808401919091521b6001600160601b0319166068820152607c0190565b600060018201614f4b57614f4b614dd9565b5060010190565b60006001600160401b0383811690831681811015614f7257614f72614dd9565b039392505050565b600082821015614f8c57614f8c614dd9565b500390565b6000816000190483118215151615614fab57614fab614dd9565b500290565b601f8211156143cc57600081815260208120601f850160051c81016020861015614fd75750805b601f850160051c820191505b818110156138f057828155600101614fe3565b81516001600160401b0381111561500f5761500f61471a565b6150238161501d8454614d5c565b84614fb0565b602080601f83116001811461505857600084156150405750858301515b600019600386901b1c1916600185901b1785556138f0565b600085815260208120601f198616915b8281101561508757888601518255948401946001909101908401615068565b50858210156150a55787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601260045260246000fd5b6000826150da576150da6150b5565b500490565b60208082526043908201527f506f6c79676f6e5a6b45564d3a3a6973466f7263654261746368416c6c6f776560408201527f643a204f6e6c7920696620666f72636520626174636820697320617661696c61606082015262626c6560e81b608082015260a00190565b6000821982111561515b5761515b614dd9565b500190565b6020808252603b908201527f456d657267656e63794d616e616765723a3a6966456d657267656e637953746160408201527f74653a206f6e6c7920696620656d657267656e63792073746174650000000000606082015260800190565b6020808252603c908201527f506f6c79676f6e5a6b45564d3a3a6f6e6c79547275737465644167677265676160408201527f746f723a204f6e6c7920747275737465642061676772656761746f7200000000606082015260800190565b8381526001600160a01b038316602082015260606040820181905260009061524490830184614618565b95945050505050565b60006001600160401b0380841680615267576152676150b5565b92169190910492915050565b600082516152858184602087016145ec565b9190910192915050565b60008261529e5761529e6150b5565b500690565b61012081016040808784376000838201818152879190815b60028110156152db578484833790840182815292840192906001016152bb565b5050828760c0870137610100850181815286935091505b60018110156153115782518252602092830192909101906001016152f2565b50505095945050505050565b60006020828403121561532f57600080fd5b815161465781614bc7565b600181815b8085111561537557816000190482111561535b5761535b614dd9565b8085161561536857918102915b93841c939080029061533f565b509250929050565b60008261538c57506001614963565b8161539957506000614963565b81600181146153af57600281146153b9576153d5565b6001915050614963565b60ff8411156153ca576153ca614dd9565b50506001821b614963565b5060208310610133831016604e8410600b84101617156153f8575081810a614963565b615402838361533a565b806000190482111561541657615416614dd9565b029392505050565b6000614657838361537d56fe506f6c79676f6e5a6b45564d3a3a6163746976617465456d657267656e637953506f6c79676f6e5a6b45564d3a3a5f766572696679426174636865733a20696e506f6c79676f6e5a6b45564d3a3a5f70726f766544697374696e637450656e64506f6c79676f6e5a6b45564d3a3a73657175656e6365466f7263654261746368506f6c79676f6e5a6b45564d3a3a73657175656e6365426174636865733a2046a2646970667358221220df0c718872080a06c39a4df983cba0d2e7ae0d8c03151e2e3bf840ff4528fbc464736f6c634300080f0033", - "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061032f5760003560e01c80638da5cb5b116101b4578063cfa8ed47116100fa578063e7a7ed021161009d578063e7a7ed021461080e578063e8bf92ed14610828578063eaeb077b1461083b578063edc411211461084e578063f14916d614610861578063f2fde38b14610874578063f851a44014610887578063f8b823e41461089a57600080fd5b8063cfa8ed471461077c578063d02103ca14610796578063d8d1091b146107a9578063d8f54db0146107bc578063d939b315146107d0578063dbc16976146107ea578063e11f3f18146107f2578063e217cfd61461080557600080fd5b8063ab9fc5ef11610162578063ab9fc5ef14610688578063adc879e914610692578063afd23cbe146106ac578063b4d63f58146106d4578063b6b0b09714610734578063c0ed84e01461074e578063c89e42df14610756578063cf1363061461076957600080fd5b80638da5cb5b1461062157806399f5634e146106325780639c9f3dfe1461063a5780639eb831b91461064d5780639f0d039d14610655578063a3c573eb1461065d578063aa58bad61461067057600080fd5b80634a910e6a11610279578063715018a611610227578063715018a61461053b5780637215541a1461054357806375c508b3146105565780637fcb365314610569578063837a47381461057c578063841b24d7146105ea5780638b48931e146106045780638c4a0af71461060e57600080fd5b80634a910e6a146104a75780635392c5e0146104ba578063542028d5146104da57806360943d6a146104e25780636b8616ce146104f55780636ff512cc14610515578063704b6c021461052857600080fd5b8063383b3be8116102e1578063383b3be8146103fa578063394218e91461040d5780633c15826714610420578063423fa85614610433578063456052671461044d578063458c0477146104675780634834a3431461047a5780634a1a89a71461048d57600080fd5b8063107bf28c1461033457806315064c96146103525780631816b7e51461036f57806319d8ac6114610384578063220d7899146103af57806329878983146103c25780632d0889d3146103e2575b600080fd5b61033c6108a3565b6040516103499190614644565b60405180910390f35b60655461035f9060ff1681565b6040519015158152602001610349565b61038261037d36600461465e565b610931565b005b606854610397906001600160401b031681565b6040516001600160401b039091168152602001610349565b61033c6103bd36600461469e565b610a5b565b606a546103d5906001600160a01b031681565b60405161034991906146eb565b6103ec620493e081565b604051908152602001610349565b61035f6104083660046146ff565b610bfc565b61038261041b3660046146ff565b610c43565b61038261042e36600461483c565b610dff565b60685461039790600160401b90046001600160401b031681565b60685461039790600160801b90046001600160401b031681565b607254610397906001600160401b031681565b61038261048836600461497a565b6115c6565b60725461039790600160401b90046001600160401b031681565b6103826104b53660046146ff565b61190f565b6103ec6104c83660046146ff565b606d6020526000908152604090205481565b61033c6119c5565b6103826104f0366004614a1c565b6119d2565b6103ec6105033660046146ff565b60666020526000908152604090205481565b610382610523366004614af3565b611d2d565b610382610536366004614af3565b611dab565b610382611e20565b6103826105513660046146ff565b611e34565b610382610564366004614b10565b61203b565b606954610397906001600160401b031681565b6105bf61058a366004614bae565b6071602052600090815260409020805460018201546002909201546001600160401b0380831693600160401b90930416919084565b604080516001600160401b039586168152949093166020850152918301526060820152608001610349565b60725461039790600160c01b90046001600160401b031681565b61039762093a8081565b61038261061c366004614bd5565b6120ca565b6033546001600160a01b03166103d5565b6103ec612141565b6103826106483660046146ff565b612229565b6103ec600c81565b6074546103ec565b6070546103d5906001600160a01b031681565b6065546103979061010090046001600160401b031681565b6103976206978081565b606c5461039790600160a81b90046001600160401b031681565b6065546106c190600160481b900461ffff1681565b60405161ffff9091168152602001610349565b61070f6106e23660046146ff565b606760205260009081526040902080546001909101546001600160401b0380821691600160401b90041683565b604080519384526001600160401b039283166020850152911690820152606001610349565b6065546103d590600160581b90046001600160a01b031681565b6103976123d7565b610382610764366004614bf2565b612424565b6103826107773660046146ff565b61248a565b6069546103d590600160401b90046001600160a01b031681565b606c546103d5906001600160a01b031681565b6103826107b7366004614c26565b61250b565b606c5461035f90600160a01b900460ff1681565b60725461039790600160801b90046001600160401b031681565b6103826129cb565b610382610800366004614b10565b612a87565b6103976103e881565b60685461039790600160c01b90046001600160401b031681565b606b546103d5906001600160a01b031681565b610382610849366004614d18565b612bcc565b61038261085c36600461497a565b612ef5565b61038261086f366004614af3565b613015565b610382610882366004614af3565b61308a565b6073546103d5906001600160a01b031681565b6103ec60745481565b606f80546108b090614d5c565b80601f01602080910402602001604051908101604052809291908181526020018280546108dc90614d5c565b80156109295780601f106108fe57610100808354040283529160200191610929565b820191906000526020600020905b81548152906001019060200180831161090c57829003601f168201915b505050505081565b6073546001600160a01b031633146109645760405162461bcd60e51b815260040161095b90614d96565b60405180910390fd5b6103e88161ffff161015801561097f57506104008161ffff16105b610a045760405162461bcd60e51b815260206004820152604a60248201527f506f6c79676f6e5a6b45564d3a3a7365744d756c7469706c696572426174636860448201527f4665653a206e65774d756c7469706c696572426174636846656520696e636f72606482015269726563742072616e676560b01b608482015260a40161095b565b6065805461ffff60481b1916600160481b61ffff8416908102919091179091556040519081527f7019933d795eba185c180209e8ae8bffbaa25bcef293364687702c31f4d302c5906020015b60405180910390a150565b6001600160401b03808616600081815260676020526040808220549388168252902054606092911580610a8d57508115155b610b01576040805162461bcd60e51b81526020600482015260248101919091527f506f6c79676f6e5a6b45564d3a3a676574496e707574536e61726b427974657360448201527f3a206f6c64416363496e7075744861736820646f6573206e6f74206578697374606482015260840161095b565b80610b76576040805162461bcd60e51b81526020600482015260248101919091527f506f6c79676f6e5a6b45564d3a3a676574496e707574536e61726b427974657360448201527f3a206e6577416363496e7075744861736820646f6573206e6f74206578697374606482015260840161095b565b606c54604080516001600160601b03193360601b166020820152603481019790975260548701939093526001600160c01b031960c0998a1b81166074880152600160a81b909104891b8116607c870152608486019490945260a485015260c4840194909452509290931b90911660e4830152805180830360cc01815260ec909201905290565b6072546001600160401b0382811660009081526071602052604081205490924292610c3292600160801b90920481169116614def565b6001600160401b0316111592915050565b6073546001600160a01b03163314610c6d5760405162461bcd60e51b815260040161095b90614d96565b62093a806001600160401b0382161115610d065760405162461bcd60e51b815260206004820152604e60248201527f506f6c79676f6e5a6b45564d3a3a73657454727573746564416767726567617460448201527f6f7254696d656f75743a20457863656564206d61782068616c7420616767726560648201526d19d85d1a5bdb881d1a5b595bdd5d60921b608482015260a40161095b565b60655460ff16610da9576072546001600160401b03600160c01b909104811690821610610da95760405162461bcd60e51b8152602060048201526044602482018190527f506f6c79676f6e5a6b45564d3a3a736574547275737465644167677265676174908201527f6f7254696d656f75743a204e65772074696d656f7574206d757374206265206c60648201526337bbb2b960e11b608482015260a40161095b565b607280546001600160c01b0316600160c01b6001600160401b038416908102919091179091556040519081527f1f4fa24c2e4bad19a7f3ec5c5485f70d46c798461c2e684f55bbd0fc661373a190602001610a50565b60655460ff1615610e225760405162461bcd60e51b815260040161095b90614e1a565b606954600160401b90046001600160a01b03163314610ea95760405162461bcd60e51b815260206004820152603a60248201527f506f6c79676f6e5a6b45564d3a3a6f6e6c795472757374656453657175656e6360448201527f65723a204f6e6c7920747275737465642073657175656e636572000000000000606482015260840161095b565b805180610f1e5760405162461bcd60e51b815260206004820152603d60248201527f506f6c79676f6e5a6b45564d3a3a73657175656e6365426174636865733a204160448201527f74206c65617374206d7573742073657175656e63652031206261746368000000606482015260840161095b565b6103e88110610f97576040805162461bcd60e51b81526020600482015260248101919091527f506f6c79676f6e5a6b45564d3a3a73657175656e6365426174636865733a204360448201527f616e6e6f742073657175656e63652074686174206d616e792062617463686573606482015260840161095b565b6068546001600160401b03600160401b82048116600081815260676020526040812054838516949293600160801b90930490921691905b858110156113fc576000878281518110610fea57610fea614e82565b60200260200101519050600081606001516001600160401b0316111561117a578361101481614e98565b94505060008160000151805190602001208260200151836060015160405160200161104193929190614ebe565b60408051601f1981840301815291815281516020928301206001600160401b0388166000908152606690935291205490915081146110d55760405162461bcd60e51b815260206004820152603d60248201526000805160206154ab83398151915260448201527f6f7263656420626174636865732064617461206d757374206d61746368000000606482015260840161095b565b81606001516001600160401b031682604001516001600160401b031610156111745760405162461bcd60e51b815260206004820152605860248201526000805160206154ab83398151915260448201527f6f7263656420626174636865732074696d657374616d70206d757374206265206064820152773134b3b3b2b91037b91032b8bab0b6103a3430b71036b4b760411b608482015260a40161095b565b506112ef565b602081015115806112035750606c5460208201516040516312bd9b1960e11b81526001600160a01b039092169163257b3632916111bd9160040190815260200190565b6020604051808303816000875af11580156111dc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112009190614ee1565b15155b6112755760405162461bcd60e51b815260206004820152603a60248201527f506f6c79676f6e5a6b45564d3a3a73657175656e6365426174636865733a204760448201527f6c6f62616c206578697420726f6f74206d757374206578697374000000000000606482015260840161095b565b805151620493e0116112ef5760405162461bcd60e51b815260206004820152603a60248201527f506f6c79676f6e5a6b45564d3a3a73657175656e6365426174636865733a205460448201527f72616e73616374696f6e73206279746573206f766572666c6f77000000000000606482015260840161095b565b856001600160401b031681604001516001600160401b03161015801561132257504281604001516001600160401b031611155b6113945760405162461bcd60e51b815260206004820152603d60248201527f506f6c79676f6e5a6b45564d3a3a73657175656e6365426174636865733a205460448201527f696d657374616d70206d75737420626520696e736964652072616e6765000000606482015260840161095b565b805180516020918201208183015160408085015190516113bb948894939291339101614efa565b60405160208183030381529060405280519060200120925084806113de90614e98565b955050806040015195505080806113f490614f39565b915050610fce565b506068546001600160401b03600160c01b9091048116908316111561146f5760405162461bcd60e51b815260206004820152603560248201526000805160206154ab8339815191526044820152746f7263652062617463686573206f766572666c6f7760581b606482015260840161095b565b60685460009061148f90600160801b90046001600160401b031684614f52565b6114a2906001600160401b031687614f7a565b60408051606081018252848152426001600160401b03908116602080840191825260688054600160401b9081900485168688019081528c861660008181526067909552979093209551865592516001909501805492519585166001600160801b03199384161795851684029590951790945583548b841691161793029290921767ffffffffffffffff60801b1916600160801b928716929092029190911790556074549091506115779033903090849061155c9190614f91565b606554600160581b90046001600160a01b0316929190613100565b61157f61316b565b606854604051600160401b9091046001600160401b0316907f303446e6a8cb73c83dff421c0b1d5e5ce0719dab1bff13660fc254e58cc17fce90600090a250505050505050565b60655460ff16156115e95760405162461bcd60e51b815260040161095b90614e1a565b6072546001600160401b03878116600090815260676020526040902060010154429261162092600160c01b90910481169116614def565b6001600160401b031611156116a95760405162461bcd60e51b815260206004820152604360248201527f506f6c79676f6e5a6b45564d3a3a766572696679426174636865733a2054727560448201527f737465642061676772656761746f722074696d656f7574206e6f7420657870696064820152621c995960ea1b608482015260a40161095b565b6103e86116b68888614f52565b6001600160401b0316106117325760405162461bcd60e51b815260206004820152603c60248201527f506f6c79676f6e5a6b45564d3a3a766572696679426174636865733a2043616e60448201527f6e6f74207665726966792074686174206d616e79206261746368657300000000606482015260840161095b565b611742888888888888888861320f565b61174b86613712565b607254600160801b90046001600160401b0316600003611813576069805467ffffffffffffffff19166001600160401b038881169182179092556000908152606d6020526040902085905560725416156117b057607280546001600160801b03191690555b606c546040516333d6247d60e01b8152600481018790526001600160a01b03909116906333d6247d90602401600060405180830381600087803b1580156117f657600080fd5b505af115801561180a573d6000803e3d6000fd5b505050506118c4565b61181b61316b565b607280546001600160401b031690600061183483614e98565b82546001600160401b039182166101009390930a92830292820219169190911790915560408051608081018252428316815289831660208083019182528284018b8152606084018b8152607254871660009081526071909352949091209251835492518616600160401b026001600160801b03199093169516949094171781559151600183015551600290910155505b60405184815233906001600160401b038816907f9c72852172521097ba7e1482e6b44b351323df0155f97f4ea18fcec28e1f5966906020015b60405180910390a35050505050505050565b606a546001600160a01b031633146119b95761192a81610bfc565b6119b95760405162461bcd60e51b815260206004820152605460248201527f506f6c79676f6e5a6b45564d3a3a636f6e736f6c696461746550656e64696e6760448201527f53746174653a2050656e64696e67207374617465206973206e6f7420726561646064820152731e481d1bc818994818dbdb9cdbdb1a59185d195960621b608482015260a40161095b565b6119c2816138f8565b50565b606e80546108b090614d5c565b600054610100900460ff16158080156119f25750600054600160ff909116105b80611a0c5750303b158015611a0c575060005460ff166001145b611a6f5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161095b565b6000805460ff191660011790558015611a92576000805461ff0019166101001790555b606c80546001600160a01b03199081166001600160a01b038c81169190911790925560658054600160581b600160f81b031916600160581b8c851602179055606b805482168a841617905560708054909116918816919091179055611afa6020860186614af3565b607380546001600160a01b0319166001600160a01b0392909216919091179055611b2a6060860160408701614af3565b606980546001600160a01b0392909216600160401b02600160401b600160e01b0319909216919091179055611b6560c0860160a08701614af3565b606a80546001600160a01b0319166001600160a01b039290921691909117905560008052606d6020527fda90043ba5b4096ba14704bc227ab0d3167da15b887e62ab2e76e37daa711356849055611bc260e0860160c087016146ff565b607280546001600160401b0392909216600160c01b026001600160c01b03909216919091179055611bf960408601602087016146ff565b606c80546001600160401b0392909216600160a81b0267ffffffffffffffff60a81b19909216919091179055611c3560808601606087016146ff565b607280546001600160401b0392909216600160801b0267ffffffffffffffff60801b19909216919091179055611c7160a0860160808701614bd5565b606c8054911515600160a01b0260ff60a01b19909216919091179055606e611c998482614ff6565b50606f611ca68382614ff6565b50670de0b6b3a7640000607455606580546affffffffffffffffffff0019166a03ea000000000000070800179055611cdc613add565b8015611d22576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050565b6073546001600160a01b03163314611d575760405162461bcd60e51b815260040161095b90614d96565b60698054600160401b600160e01b031916600160401b6001600160a01b038416021790556040517ff54144f9611984021529f814a1cb6a41e22c58351510a0d9f7e822618abb9cc090610a509083906146eb565b6073546001600160a01b03163314611dd55760405162461bcd60e51b815260040161095b90614d96565b607380546001600160a01b0319166001600160a01b0383161790556040517f5a272403b402d892977df56625f4164ccaf70ca3863991c43ecfe76a6905b0a190610a509083906146eb565b611e28613b51565b611e326000613bab565b565b6033546001600160a01b03163314612033576000611e506123d7565b9050806001600160401b0316826001600160401b031611611ec75760405162461bcd60e51b815260206004820152603c602482015260008051602061542b83398151915260448201527f746174653a20426174636820616c726561647920766572696669656400000000606482015260840161095b565b6068546001600160401b03600160401b909104811690831611801590611f0957506001600160401b038083166000908152606760205260409020600101541615155b611f825760405162461bcd60e51b8152602060048201526050602482015260008051602061542b83398151915260448201527f746174653a204261746368206e6f742073657175656e636564206f72206e6f7460648201526f20656e64206f662073657175656e636560801b608482015260a40161095b565b6001600160401b038083166000908152606760205260409020600101544291611fb09162093a809116614def565b6001600160401b031611156120315760405162461bcd60e51b815260206004820152604d602482015260008051602061542b83398151915260448201527f746174653a204167677265676174696f6e2068616c742074696d656f7574206960648201526c1cc81b9bdd08195e1c1a5c9959609a1b608482015260a40161095b565b505b6119c2613bfd565b60655460ff161561205e5760405162461bcd60e51b815260040161095b90614e1a565b61206f898989898989898989613c6d565b6001600160401b0386166000908152606d60209081526040918290205482519081529081018690527f1f44c21118c4603cfb4e1b621dbcfa2b73efcececee2b99b620b2953d33a7010910160405180910390a1611d22613bfd565b6073546001600160a01b031633146120f45760405162461bcd60e51b815260040161095b90614d96565b606c8054821515600160a01b0260ff60a01b199091161790556040517fbacda50a4a8575be1d91a7ebe29ee45056f3a94f12a2281eb6b43afa33bcefe690610a5090831515815260200190565b6065546040516370a0823160e01b81526000918291600160581b9091046001600160a01b0316906370a082319061217c9030906004016146eb565b602060405180830381865afa158015612199573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121bd9190614ee1565b905060006121c96123d7565b6068546001600160401b03600160401b82048116916121f991600160801b8204811691600160c01b900416614f52565b6122039190614def565b61220d9190614f52565b6001600160401b0316905061222281836150cb565b9250505090565b6073546001600160a01b031633146122535760405162461bcd60e51b815260040161095b90614d96565b62093a806001600160401b03821611156122e75760405162461bcd60e51b815260206004820152604960248201527f506f6c79676f6e5a6b45564d3a3a73657450656e64696e67537461746554696d60448201527f656f75743a20457863656564206d61782068616c74206167677265676174696f6064820152681b881d1a5b595bdd5d60ba1b608482015260a40161095b565b60655460ff1661237c576072546001600160401b03600160801b90910481169082161061237c5760405162461bcd60e51b815260206004820152603f60248201527f506f6c79676f6e5a6b45564d3a3a73657450656e64696e67537461746554696d60448201527f656f75743a204e65772074696d656f7574206d757374206265206c6f77657200606482015260840161095b565b6072805467ffffffffffffffff60801b1916600160801b6001600160401b038416908102919091179091556040519081527fc4121f4e22c69632ebb7cf1f462be0511dc034f999b52013eddfb24aab765c7590602001610a50565b6072546000906001600160401b03161561241457506072546001600160401b03908116600090815260716020526040902054600160401b90041690565b506069546001600160401b031690565b6073546001600160a01b0316331461244e5760405162461bcd60e51b815260040161095b90614d96565b606e61245a8282614ff6565b507f6b8f723a4c7a5335cafae8a598a0aa0301be1387c037dccc085b62add6448b2081604051610a509190614644565b6073546001600160a01b031633146124b45760405162461bcd60e51b815260040161095b90614d96565b6065805468ffffffffffffffff0019166101006001600160401b038416908102919091179091556040519081527f03a12f7e53d2a9e31a9e913d85c12c4c38feb92abe003c111329298af088437f90602001610a50565b60655460ff161561252e5760405162461bcd60e51b815260040161095b90614e1a565b606c54600160a01b900460ff16151560011461255c5760405162461bcd60e51b815260040161095b906150df565b8051806125bf5760405162461bcd60e51b815260206004820152603f602482015260008051602061548b83398151915260448201527f65733a204d75737420666f726365206174206c65617374203120626174636800606482015260840161095b565b6103e881106126305760405162461bcd60e51b8152602060048201526043602482015260008051602061548b83398151915260448201527f65733a2043616e6e6f74207665726966792074686174206d616e79206261746360648201526268657360e81b608482015260a40161095b565b6068546001600160401b03600160c01b8204811691612658918491600160801b900416615148565b11156126b45760405162461bcd60e51b8152602060048201526037602482015260008051602061548b833981519152604482015276195cce88119bdc98d94818985d18da081a5b9d985b1a59604a1b606482015260840161095b565b6068546001600160401b03600160401b820481166000818152606760205260408120549193600160801b9004909216915b848110156128e257600086828151811061270157612701614e82565b60200260200101519050838061271690614e98565b94505060008160000151805190602001208260200151836040015160405160200161274393929190614ebe565b60408051601f1981840301815291815281516020928301206001600160401b0388166000908152606690935291205490915081146127e25760405162461bcd60e51b8152602060048201526042602482015260008051602061548b83398151915260448201527f65733a20466f7263656420626174636865732064617461206d757374206d61746064820152610c6d60f31b608482015260a40161095b565b6127ed600188614f7a565b830361288457426206978083604001516128079190614def565b6001600160401b031611156128845760405162461bcd60e51b8152602060048201526049602482015260008051602061548b83398151915260448201527f65733a20466f72636564206261746368206973206e6f7420696e2074696d656f6064820152681d5d081c195c9a5bd960ba1b608482015260a40161095b565b81518051602091820120818401516040516128a793889392914291339101614efa565b60405160208183030381529060405280519060200120935085806128ca90614e98565b965050505080806128da90614f39565b9150506126e5565b506068805467ffffffffffffffff1916426001600160401b03908116918217808455604080516060810182528681526020808201958652600160401b9384900485168284019081528a861660008181526067909352848320935184559651600193909301805491519387166001600160801b0319909216919091179286168502929092179091558554600160401b600160c01b03191694830267ffffffffffffffff60801b191694909417600160801b88851602179485905551930416917f648a61dd2438f072f5a1960939abd30f37aea80d2e94c9792ad142d3e0a490a49190a25050505050565b60655460ff166129ed5760405162461bcd60e51b815260040161095b90615160565b6073546001600160a01b03163314612a175760405162461bcd60e51b815260040161095b90614d96565b607060009054906101000a90046001600160a01b03166001600160a01b031663dbc169766040518163ffffffff1660e01b8152600401600060405180830381600087803b158015612a6757600080fd5b505af1158015612a7b573d6000803e3d6000fd5b50505050611e326142a3565b606a546001600160a01b03163314612ab15760405162461bcd60e51b815260040161095b906151bd565b612ac2898989898989898989613c6d565b6069805467ffffffffffffffff19166001600160401b038881169182179092556000908152606d602052604090208590556072541615612b0d57607280546001600160801b03191690555b606c546040516333d6247d60e01b8152600481018790526001600160a01b03909116906333d6247d90602401600060405180830381600087803b158015612b5357600080fd5b505af1158015612b67573d6000803e3d6000fd5b5050607280546001600160c01b031661127560c71b179055505060405184815233906001600160401b038816907fcc1b5520188bf1dd3e63f98164b577c4d75c11a619ddea692112f0d1aec4cf729060200160405180910390a3505050505050505050565b60655460ff1615612bef5760405162461bcd60e51b815260040161095b90614e1a565b606c54600160a01b900460ff161515600114612c1d5760405162461bcd60e51b815260040161095b906150df565b6000612c2860745490565b905081811115612c8d5760405162461bcd60e51b815260206004820152602a60248201527f506f6c79676f6e5a6b45564d3a3a666f72636542617463683a204e6f7420656e6044820152696f756768206d6174696360b01b606482015260840161095b565b620493e0835110612cfe5760405162461bcd60e51b815260206004820152603560248201527f506f6c79676f6e5a6b45564d3a3a666f72636542617463683a205472616e73616044820152746374696f6e73206279746573206f766572666c6f7760581b606482015260840161095b565b606554612d1d90600160581b90046001600160a01b0316333084613100565b606c5460408051633ed691ef60e01b815290516000926001600160a01b031691633ed691ef9160048083019260209291908290030181865afa158015612d67573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d8b9190614ee1565b60688054919250600160c01b9091046001600160401b0316906018612daf83614e98565b91906101000a8154816001600160401b0302191690836001600160401b031602179055505083805190602001208142604051602001612df093929190614ebe565b60408051808303601f190181529181528151602092830120606854600160c01b90046001600160401b031660009081526066909352912055323303612e9457606854604080518381523360208201526060918101829052600091810191909152600160c01b9091046001600160401b0316907ff94bb37db835f1ab585ee00041849a09b12cd081d77fa15ca070757619cbc9319060800160405180910390a2612eef565b606860189054906101000a90046001600160401b03166001600160401b03167ff94bb37db835f1ab585ee00041849a09b12cd081d77fa15ca070757619cbc931823387604051612ee69392919061521a565b60405180910390a25b50505050565b606a546001600160a01b03163314612f1f5760405162461bcd60e51b815260040161095b906151bd565b612f2f888888888888888861320f565b6069805467ffffffffffffffff19166001600160401b038881169182179092556000908152606d602052604090208590556072541615612f7a57607280546001600160801b03191690555b606c546040516333d6247d60e01b8152600481018790526001600160a01b03909116906333d6247d90602401600060405180830381600087803b158015612fc057600080fd5b505af1158015612fd4573d6000803e3d6000fd5b50506040518681523392506001600160401b03891691507f0c0ce073a7d7b5850c04ccc4b20ee7d3179d5f57d0ac44399565792c0f72fce7906020016118fd565b6073546001600160a01b0316331461303f5760405162461bcd60e51b815260040161095b90614d96565b606a80546001600160a01b0319166001600160a01b0383161790556040517f61f8fec29495a3078e9271456f05fb0707fd4e41f7661865f80fc437d06681ca90610a509083906146eb565b613092613b51565b6001600160a01b0381166130f75760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161095b565b6119c281613bab565b6040516001600160a01b0380851660248301528316604482015260648101829052612eef9085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526142fa565b6072546001600160401b03600160401b8204811691161115611e32576072546000906131a890600160401b90046001600160401b03166001614def565b90506131b381610bfc565b156119c2576072546000906002906131d59084906001600160401b0316614f52565b6131df919061524d565b6131e99083614def565b90506131f481610bfc565b1561320657613202816138f8565b5050565b613202826138f8565b60008061321a6123d7565b90506001600160401b038a1615613380576072546001600160401b03908116908b1611156132d25760405162461bcd60e51b815260206004820152605960248201527f506f6c79676f6e5a6b45564d3a3a5f766572696679426174636865733a20706560448201527f6e64696e6753746174654e756d206d757374206265206c657373206f7220657160648201527875616c207468616e206c61737450656e64696e67537461746560381b608482015260a40161095b565b6001600160401b03808b1660009081526071602052604090206002810154815490945090918b8116600160401b909204161461337a5760405162461bcd60e51b815260206004820152604d602482015260008051602061544b83398151915260448201527f69744e756d4261746368206d757374206d61746368207468652070656e64696e60648201526c0ce40e6e8c2e8ca40c4c2e8c6d609b1b608482015260a40161095b565b506134a6565b6001600160401b0389166000908152606d602052604090205491508161340a5760405162461bcd60e51b81526020600482015260446024820181905260008051602061544b833981519152908201527f69744e756d426174636820737461746520726f6f7420646f6573206e6f7420656064820152631e1a5cdd60e21b608482015260a40161095b565b806001600160401b0316896001600160401b031611156134a65760405162461bcd60e51b815260206004820152605e602482015260008051602061544b83398151915260448201527f69744e756d4261746368206d757374206265206c657373206f7220657175616c60648201527f207468616e2063757272656e744c617374566572696669656442617463680000608482015260a40161095b565b806001600160401b0316886001600160401b03161161354e5760405162461bcd60e51b815260206004820152605860248201527f506f6c79676f6e5a6b45564d3a3a5f766572696679426174636865733a20666960448201527f6e616c4e65774261746368206d75737420626520626967676572207468616e206064820152770c6eae4e4cadce898c2e6e8accae4d2ccd2cac884c2e8c6d60431b608482015260a40161095b565b600061355d8a8a8a868b610a5b565b905060007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000016002836040516135929190615273565b602060405180830381855afa1580156135af573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906135d29190614ee1565b6135dc919061528f565b606b546040805160208101825283815290516343753b4d60e01b81529293506001600160a01b03909116916343753b4d91613620918b918b918b91906004016152a3565b602060405180830381865afa15801561363d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613661919061531d565b6136c15760405162461bcd60e51b815260206004820152602b60248201527f506f6c79676f6e5a6b45564d3a3a5f766572696679426174636865733a20496e60448201526a3b30b634b210383937b7b360a91b606482015260840161095b565b613704336136cf858d614f52565b6001600160401b03166136e0612141565b6136ea9190614f91565b606554600160581b90046001600160a01b031691906143d1565b505050505050505050505050565b600061371c6123d7565b90508160008061372c8484614f52565b6001600160401b031690505b836001600160401b0316836001600160401b0316146137de576001600160401b03808416600090815260676020526040902060655460018201549192610100909104811691613788911642614f7a565b11156137c35760018101546137ad90600160401b90046001600160401b031685614f52565b6137c0906001600160401b031684615148565b92505b60010154600160401b90046001600160401b03169250613738565b60006137ea8383614f7a565b9050828110156138645760006138008285614f7a565b9050600c81116138105780613813565b600c5b9050613820816003614f91565b61382b90600a61541e565b606554613844908390600160481b900461ffff1661541e565b6074546138519190614f91565b61385b91906150cb565b607455506138f0565b60006138708483614f7a565b9050600c81116138805780613883565b600c5b90506000613892826003614f91565b61389d90600a61541e565b6065546138b6908490600160481b900461ffff1661541e565b6074546138c39190614f91565b6138cd91906150cb565b9050806074546074546138e09190614f91565b6138ea91906150cb565b60745550505b505050505050565b6001600160401b0381161580159061392557506072546001600160401b03600160401b9091048116908216115b801561394057506072546001600160401b0390811690821611155b6139b25760405162461bcd60e51b815260206004820152603f60248201527f506f6c79676f6e5a6b45564d3a3a5f636f6e736f6c696461746550656e64696e60448201527f6753746174653a2070656e64696e6753746174654e756d20696e76616c696400606482015260840161095b565b6001600160401b038181166000818152607160209081526040808320805460698054600160401b9283900490981667ffffffffffffffff19909816881790556002820154878652606d90945293829020929092556072805467ffffffffffffffff60401b19169390940292909217909255606c54600183015491516333d6247d60e01b815260048101929092529192916001600160a01b0316906333d6247d90602401600060405180830381600087803b158015613a6f57600080fd5b505af1158015613a83573d6000803e3d6000fd5b50505050826001600160401b0316816001600160401b03167f328d3c6c0fd6f1be0515e422f2d87e59f25922cbc2233568515a0c4bc3f8510e8460020154604051613ad091815260200190565b60405180910390a3505050565b600054610100900460ff16613b485760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b606482015260840161095b565b611e3233613bab565b6033546001600160a01b03163314611e325760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161095b565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b607060009054906101000a90046001600160a01b03166001600160a01b0316632072f6c56040518163ffffffff1660e01b8152600401600060405180830381600087803b158015613c4d57600080fd5b505af1158015613c61573d6000803e3d6000fd5b50505050611e32614401565b60006001600160401b038a1615613ddd576072546001600160401b03908116908b161115613d255760405162461bcd60e51b8152602060048201526065602482015260008051602061546b83398151915260448201527f696e6753746174653a2070656e64696e6753746174654e756d206d757374206260648201527f65206c657373206f7220657175616c207468616e206c61737450656e64696e67608482015264537461746560d81b60a482015260c40161095b565b506001600160401b03808a1660009081526071602052604090206002810154815490928a8116600160401b9092041614613dd75760405162461bcd60e51b8152602060048201526059602482015260008051602061546b83398151915260448201527f696e6753746174653a20696e69744e756d4261746368206d757374206d6174636064820152780d040e8d0ca40e0cadcc8d2dcce40e6e8c2e8ca40c4c2e8c6d603b1b608482015260a40161095b565b50613f16565b506001600160401b0387166000908152606d602052604090205480613e715760405162461bcd60e51b8152602060048201526050602482015260008051602061546b83398151915260448201527f696e6753746174653a20696e69744e756d426174636820737461746520726f6f60648201526f1d08191bd95cc81b9bdd08195e1a5cdd60821b608482015260a40161095b565b6069546001600160401b039081169089161115613f165760405162461bcd60e51b8152602060048201526063602482015260008051602061546b83398151915260448201527f696e6753746174653a20696e69744e756d4261746368206d757374206265206c60648201527f657373206f7220657175616c207468616e206c617374566572696669656442616084820152620e8c6d60eb1b60a482015260c40161095b565b6072546001600160401b03908116908a1611801590613f465750896001600160401b0316896001600160401b0316115b8015613f6757506072546001600160401b03600160401b9091048116908a16115b613fd85760405162461bcd60e51b8152602060048201526048602482015260008051602061546b83398151915260448201527f696e6753746174653a2066696e616c50656e64696e6753746174654e756d20696064820152671b98dbdc9c9958dd60c21b608482015260a40161095b565b6001600160401b03898116600090815260716020526040902054600160401b90048116908816146140915760405162461bcd60e51b8152602060048201526063602482015260008051602061546b83398151915260448201527f696e6753746174653a2066696e616c4e65774261746368206d7573742062652060648201527f657175616c207468616e2063757272656e744c617374566572696669656442616084820152620e8c6d60eb1b60a482015260c40161095b565b60006140a0898989858a610a5b565b905060007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000016002836040516140d59190615273565b602060405180830381855afa1580156140f2573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906141159190614ee1565b61411f919061528f565b606b546040805160208101825283815290516343753b4d60e01b81529293506001600160a01b03909116916343753b4d91614163918a918a918a91906004016152a3565b602060405180830381865afa158015614180573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141a4919061531d565b6141fe5760405162461bcd60e51b8152602060048201526037602482015260008051602061546b83398151915260448201527634b733a9ba30ba329d1024b73b30b634b210383937b7b360491b606482015260840161095b565b6001600160401b038b166000908152607160205260409020600201548790036137045760405162461bcd60e51b815260206004820152605b602482015260008051602061546b83398151915260448201527f696e6753746174653a2053746f72656420726f6f74206d75737420626520646960648201527f66666572656e74207468616e206e657720737461746520726f6f740000000000608482015260a40161095b565b60655460ff166142c55760405162461bcd60e51b815260040161095b90615160565b6065805460ff191690556040517f1e5e34eea33501aecf2ebec9fe0e884a40804275ea7fe10b2ba084c8374308b390600090a1565b600061434f826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661445c9092919063ffffffff16565b8051909150156143cc578080602001905181019061436d919061531d565b6143cc5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840161095b565b505050565b6040516001600160a01b0383166024820152604481018290526143cc90849063a9059cbb60e01b90606401613134565b60655460ff16156144245760405162461bcd60e51b815260040161095b90614e1a565b6065805460ff191660011790556040517f2261efe5aef6fedc1fd1550b25facc9181745623049c7901287030b9ad1a549790600090a1565b606061446b8484600085614473565b949350505050565b6060824710156144d45760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b606482015260840161095b565b600080866001600160a01b031685876040516144f09190615273565b60006040518083038185875af1925050503d806000811461452d576040519150601f19603f3d011682016040523d82523d6000602084013e614532565b606091505b50915091506145438783838761454e565b979650505050505050565b606083156145bd5782516000036145b6576001600160a01b0385163b6145b65760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161095b565b508161446b565b61446b83838151156145d25781518083602001fd5b8060405162461bcd60e51b815260040161095b9190614644565b60005b838110156146075781810151838201526020016145ef565b83811115612eef5750506000910152565b600081518084526146308160208601602086016145ec565b601f01601f19169290920160200192915050565b6020815260006146576020830184614618565b9392505050565b60006020828403121561467057600080fd5b813561ffff8116811461465757600080fd5b80356001600160401b038116811461469957600080fd5b919050565b600080600080600060a086880312156146b657600080fd5b6146bf86614682565b94506146cd60208701614682565b94979496505050506040830135926060810135926080909101359150565b6001600160a01b0391909116815260200190565b60006020828403121561471157600080fd5b61465782614682565b634e487b7160e01b600052604160045260246000fd5b604051608081016001600160401b03811182821017156147525761475261471a565b60405290565b604051606081016001600160401b03811182821017156147525761475261471a565b604051601f8201601f191681016001600160401b03811182821017156147a2576147a261471a565b604052919050565b60006001600160401b038211156147c3576147c361471a565b5060051b60200190565b600082601f8301126147de57600080fd5b81356001600160401b038111156147f7576147f761471a565b61480a601f8201601f191660200161477a565b81815284602083860101111561481f57600080fd5b816020850160208301376000918101602001919091529392505050565b6000602080838503121561484f57600080fd5b82356001600160401b038082111561486657600080fd5b818501915085601f83011261487a57600080fd5b813561488d614888826147aa565b61477a565b81815260059190911b830184019084810190888311156148ac57600080fd5b8585015b83811015614945578035858111156148c85760008081fd5b86016080818c03601f19018113156148e05760008081fd5b6148e8614730565b89830135888111156148fa5760008081fd5b6149088e8c838701016147cd565b8252506040808401358b8301526060614922818601614682565b82840152614931848601614682565b9083015250855250509186019186016148b0565b5098975050505050505050565b806040810183101561496357600080fd5b92915050565b806080810183101561496357600080fd5b6000806000806000806000806101a0898b03121561499757600080fd5b6149a089614682565b97506149ae60208a01614682565b96506149bc60408a01614682565b955060608901359450608089013593506149d98a60a08b01614952565b92506149e88a60e08b01614969565b91506149f88a6101608b01614952565b90509295985092959890939650565b6001600160a01b03811681146119c257600080fd5b600080600080600080600080888a036101c0811215614a3a57600080fd5b8935614a4581614a07565b985060208a0135614a5581614a07565b975060408a0135614a6581614a07565b965060608a0135614a7581614a07565b955060e0607f1982011215614a8957600080fd5b5060808901935061016089013592506101808901356001600160401b0380821115614ab357600080fd5b614abf8c838d016147cd565b93506101a08b0135915080821115614ad657600080fd5b50614ae38b828c016147cd565b9150509295985092959890939650565b600060208284031215614b0557600080fd5b813561465781614a07565b60008060008060008060008060006101c08a8c031215614b2f57600080fd5b614b388a614682565b9850614b4660208b01614682565b9750614b5460408b01614682565b9650614b6260608b01614682565b955060808a0135945060a08a01359350614b7f8b60c08c01614952565b9250614b8f8b6101008c01614969565b9150614b9f8b6101808c01614952565b90509295985092959850929598565b600060208284031215614bc057600080fd5b5035919050565b80151581146119c257600080fd5b600060208284031215614be757600080fd5b813561465781614bc7565b600060208284031215614c0457600080fd5b81356001600160401b03811115614c1a57600080fd5b61446b848285016147cd565b60006020808385031215614c3957600080fd5b82356001600160401b0380821115614c5057600080fd5b818501915085601f830112614c6457600080fd5b8135614c72614888826147aa565b81815260059190911b83018401908481019088831115614c9157600080fd5b8585015b8381101561494557803585811115614cad5760008081fd5b86016060818c03601f1901811315614cc55760008081fd5b614ccd614758565b8983013588811115614cdf5760008081fd5b614ced8e8c838701016147cd565b8252506040808401358b830152614d05838501614682565b9082015285525050918601918601614c95565b60008060408385031215614d2b57600080fd5b82356001600160401b03811115614d4157600080fd5b614d4d858286016147cd565b95602094909401359450505050565b600181811c90821680614d7057607f821691505b602082108103614d9057634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526023908201527f506f6c79676f6e5a6b45564d3a3a6f6e6c7941646d696e3a204f6e6c7920616460408201526236b4b760e91b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b60006001600160401b03808316818516808303821115614e1157614e11614dd9565b01949350505050565b60208082526042908201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960408201527f53746174653a206f6e6c79206966206e6f7420656d657267656e637920737461606082015261746560f01b608082015260a00190565b634e487b7160e01b600052603260045260246000fd5b60006001600160401b03808316818103614eb457614eb4614dd9565b6001019392505050565b928352602083019190915260c01b6001600160c01b031916604082015260480190565b600060208284031215614ef357600080fd5b5051919050565b9485526020850193909352604084019190915260c01b6001600160c01b0319166060808401919091521b6001600160601b0319166068820152607c0190565b600060018201614f4b57614f4b614dd9565b5060010190565b60006001600160401b0383811690831681811015614f7257614f72614dd9565b039392505050565b600082821015614f8c57614f8c614dd9565b500390565b6000816000190483118215151615614fab57614fab614dd9565b500290565b601f8211156143cc57600081815260208120601f850160051c81016020861015614fd75750805b601f850160051c820191505b818110156138f057828155600101614fe3565b81516001600160401b0381111561500f5761500f61471a565b6150238161501d8454614d5c565b84614fb0565b602080601f83116001811461505857600084156150405750858301515b600019600386901b1c1916600185901b1785556138f0565b600085815260208120601f198616915b8281101561508757888601518255948401946001909101908401615068565b50858210156150a55787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601260045260246000fd5b6000826150da576150da6150b5565b500490565b60208082526043908201527f506f6c79676f6e5a6b45564d3a3a6973466f7263654261746368416c6c6f776560408201527f643a204f6e6c7920696620666f72636520626174636820697320617661696c61606082015262626c6560e81b608082015260a00190565b6000821982111561515b5761515b614dd9565b500190565b6020808252603b908201527f456d657267656e63794d616e616765723a3a6966456d657267656e637953746160408201527f74653a206f6e6c7920696620656d657267656e63792073746174650000000000606082015260800190565b6020808252603c908201527f506f6c79676f6e5a6b45564d3a3a6f6e6c79547275737465644167677265676160408201527f746f723a204f6e6c7920747275737465642061676772656761746f7200000000606082015260800190565b8381526001600160a01b038316602082015260606040820181905260009061524490830184614618565b95945050505050565b60006001600160401b0380841680615267576152676150b5565b92169190910492915050565b600082516152858184602087016145ec565b9190910192915050565b60008261529e5761529e6150b5565b500690565b61012081016040808784376000838201818152879190815b60028110156152db578484833790840182815292840192906001016152bb565b5050828760c0870137610100850181815286935091505b60018110156153115782518252602092830192909101906001016152f2565b50505095945050505050565b60006020828403121561532f57600080fd5b815161465781614bc7565b600181815b8085111561537557816000190482111561535b5761535b614dd9565b8085161561536857918102915b93841c939080029061533f565b509250929050565b60008261538c57506001614963565b8161539957506000614963565b81600181146153af57600281146153b9576153d5565b6001915050614963565b60ff8411156153ca576153ca614dd9565b50506001821b614963565b5060208310610133831016604e8410600b84101617156153f8575081810a614963565b615402838361533a565b806000190482111561541657615416614dd9565b029392505050565b6000614657838361537d56fe506f6c79676f6e5a6b45564d3a3a6163746976617465456d657267656e637953506f6c79676f6e5a6b45564d3a3a5f766572696679426174636865733a20696e506f6c79676f6e5a6b45564d3a3a5f70726f766544697374696e637450656e64506f6c79676f6e5a6b45564d3a3a73657175656e6365466f7263654261746368506f6c79676f6e5a6b45564d3a3a73657175656e6365426174636865733a2046a2646970667358221220df0c718872080a06c39a4df983cba0d2e7ae0d8c03151e2e3bf840ff4528fbc464736f6c634300080f0033", + "bytecode": "0x608060405234801561001057600080fd5b506154d7806100206000396000f3fe608060405234801561001057600080fd5b506004361061032f5760003560e01c80638da5cb5b116101b4578063cfa8ed47116100fa578063e7a7ed021161009d578063e7a7ed021461080e578063e8bf92ed14610828578063eaeb077b1461083b578063edc411211461084e578063f14916d614610861578063f2fde38b14610874578063f851a44014610887578063f8b823e41461089a57600080fd5b8063cfa8ed471461077c578063d02103ca14610796578063d8d1091b146107a9578063d8f54db0146107bc578063d939b315146107d0578063dbc16976146107ea578063e11f3f18146107f2578063e217cfd61461080557600080fd5b8063ab9fc5ef11610162578063ab9fc5ef14610688578063adc879e914610692578063afd23cbe146106ac578063b4d63f58146106d4578063b6b0b09714610734578063c0ed84e01461074e578063c89e42df14610756578063cf1363061461076957600080fd5b80638da5cb5b1461062157806399f5634e146106325780639c9f3dfe1461063a5780639eb831b91461064d5780639f0d039d14610655578063a3c573eb1461065d578063aa58bad61461067057600080fd5b80634a910e6a11610279578063715018a611610227578063715018a61461053b5780637215541a1461054357806375c508b3146105565780637fcb365314610569578063837a47381461057c578063841b24d7146105ea5780638b48931e146106045780638c4a0af71461060e57600080fd5b80634a910e6a146104a75780635392c5e0146104ba578063542028d5146104da57806360943d6a146104e25780636b8616ce146104f55780636ff512cc14610515578063704b6c021461052857600080fd5b8063383b3be8116102e1578063383b3be8146103fa578063394218e91461040d5780633c15826714610420578063423fa85614610433578063456052671461044d578063458c0477146104675780634834a3431461047a5780634a1a89a71461048d57600080fd5b8063107bf28c1461033457806315064c96146103525780631816b7e51461036f57806319d8ac6114610384578063220d7899146103af57806329878983146103c25780632d0889d3146103e2575b600080fd5b61033c6108a3565b6040516103499190614678565b60405180910390f35b60655461035f9060ff1681565b6040519015158152602001610349565b61038261037d366004614692565b610931565b005b606854610397906001600160401b031681565b6040516001600160401b039091168152602001610349565b61033c6103bd3660046146d2565b610a5b565b606a546103d5906001600160a01b031681565b604051610349919061471f565b6103ec620493e081565b604051908152602001610349565b61035f610408366004614733565b610bfc565b61038261041b366004614733565b610c43565b61038261042e366004614870565b610dff565b60685461039790600160401b90046001600160401b031681565b60685461039790600160801b90046001600160401b031681565b607254610397906001600160401b031681565b6103826104883660046149ae565b6115c6565b60725461039790600160401b90046001600160401b031681565b6103826104b5366004614733565b61190f565b6103ec6104c8366004614733565b606d6020526000908152604090205481565b61033c6119c5565b6103826104f0366004614a50565b6119d2565b6103ec610503366004614733565b60666020526000908152604090205481565b610382610523366004614b27565b611d2d565b610382610536366004614b27565b611dab565b610382611e20565b610382610551366004614733565b611e34565b610382610564366004614b44565b61203b565b606954610397906001600160401b031681565b6105bf61058a366004614be2565b6071602052600090815260409020805460018201546002909201546001600160401b0380831693600160401b90930416919084565b604080516001600160401b039586168152949093166020850152918301526060820152608001610349565b60725461039790600160c01b90046001600160401b031681565b61039762093a8081565b61038261061c366004614c09565b6120ca565b6033546001600160a01b03166103d5565b6103ec612141565b610382610648366004614733565b612229565b6103ec600c81565b6074546103ec565b6070546103d5906001600160a01b031681565b6065546103979061010090046001600160401b031681565b6103976206978081565b606c5461039790600160a81b90046001600160401b031681565b6065546106c190600160481b900461ffff1681565b60405161ffff9091168152602001610349565b61070f6106e2366004614733565b606760205260009081526040902080546001909101546001600160401b0380821691600160401b90041683565b604080519384526001600160401b039283166020850152911690820152606001610349565b6065546103d590600160581b90046001600160a01b031681565b6103976123d7565b610382610764366004614c26565b612424565b610382610777366004614733565b61248a565b6069546103d590600160401b90046001600160a01b031681565b606c546103d5906001600160a01b031681565b6103826107b7366004614c5a565b61250b565b606c5461035f90600160a01b900460ff1681565b60725461039790600160801b90046001600160401b031681565b6103826129cb565b610382610800366004614b44565b612a65565b6103976103e881565b60685461039790600160c01b90046001600160401b031681565b606b546103d5906001600160a01b031681565b610382610849366004614d4c565b612baa565b61038261085c3660046149ae565b612ed3565b61038261086f366004614b27565b612ff3565b610382610882366004614b27565b613068565b6073546103d5906001600160a01b031681565b6103ec60745481565b606f80546108b090614d90565b80601f01602080910402602001604051908101604052809291908181526020018280546108dc90614d90565b80156109295780601f106108fe57610100808354040283529160200191610929565b820191906000526020600020905b81548152906001019060200180831161090c57829003601f168201915b505050505081565b6073546001600160a01b031633146109645760405162461bcd60e51b815260040161095b90614dca565b60405180910390fd5b6103e88161ffff161015801561097f57506104008161ffff16105b610a045760405162461bcd60e51b815260206004820152604a60248201527f506f6c79676f6e5a6b45564d3a3a7365744d756c7469706c696572426174636860448201527f4665653a206e65774d756c7469706c696572426174636846656520696e636f72606482015269726563742072616e676560b01b608482015260a40161095b565b6065805461ffff60481b1916600160481b61ffff8416908102919091179091556040519081527f7019933d795eba185c180209e8ae8bffbaa25bcef293364687702c31f4d302c5906020015b60405180910390a150565b6001600160401b03808616600081815260676020526040808220549388168252902054606092911580610a8d57508115155b610b01576040805162461bcd60e51b81526020600482015260248101919091527f506f6c79676f6e5a6b45564d3a3a676574496e707574536e61726b427974657360448201527f3a206f6c64416363496e7075744861736820646f6573206e6f74206578697374606482015260840161095b565b80610b76576040805162461bcd60e51b81526020600482015260248101919091527f506f6c79676f6e5a6b45564d3a3a676574496e707574536e61726b427974657360448201527f3a206e6577416363496e7075744861736820646f6573206e6f74206578697374606482015260840161095b565b606c54604080516001600160601b03193360601b166020820152603481019790975260548701939093526001600160c01b031960c0998a1b81166074880152600160a81b909104891b8116607c870152608486019490945260a485015260c4840194909452509290931b90911660e4830152805180830360cc01815260ec909201905290565b6072546001600160401b0382811660009081526071602052604081205490924292610c3292600160801b90920481169116614e23565b6001600160401b0316111592915050565b6073546001600160a01b03163314610c6d5760405162461bcd60e51b815260040161095b90614dca565b62093a806001600160401b0382161115610d065760405162461bcd60e51b815260206004820152604e60248201527f506f6c79676f6e5a6b45564d3a3a73657454727573746564416767726567617460448201527f6f7254696d656f75743a20457863656564206d61782068616c7420616767726560648201526d19d85d1a5bdb881d1a5b595bdd5d60921b608482015260a40161095b565b60655460ff16610da9576072546001600160401b03600160c01b909104811690821610610da95760405162461bcd60e51b8152602060048201526044602482018190527f506f6c79676f6e5a6b45564d3a3a736574547275737465644167677265676174908201527f6f7254696d656f75743a204e65772074696d656f7574206d757374206265206c60648201526337bbb2b960e11b608482015260a40161095b565b607280546001600160c01b0316600160c01b6001600160401b038416908102919091179091556040519081527f1f4fa24c2e4bad19a7f3ec5c5485f70d46c798461c2e684f55bbd0fc661373a190602001610a50565b60655460ff1615610e225760405162461bcd60e51b815260040161095b90614e4e565b606954600160401b90046001600160a01b03163314610ea95760405162461bcd60e51b815260206004820152603a60248201527f506f6c79676f6e5a6b45564d3a3a6f6e6c795472757374656453657175656e6360448201527f65723a204f6e6c7920747275737465642073657175656e636572000000000000606482015260840161095b565b805180610f1e5760405162461bcd60e51b815260206004820152603d60248201527f506f6c79676f6e5a6b45564d3a3a73657175656e6365426174636865733a204160448201527f74206c65617374206d7573742073657175656e63652031206261746368000000606482015260840161095b565b6103e88110610f97576040805162461bcd60e51b81526020600482015260248101919091527f506f6c79676f6e5a6b45564d3a3a73657175656e6365426174636865733a204360448201527f616e6e6f742073657175656e63652074686174206d616e792062617463686573606482015260840161095b565b6068546001600160401b03600160401b82048116600081815260676020526040812054838516949293600160801b90930490921691905b858110156113fc576000878281518110610fea57610fea614eb6565b60200260200101519050600081606001516001600160401b0316111561117a578361101481614ecc565b94505060008160000151805190602001208260200151836060015160405160200161104193929190614ef2565b60408051601f1981840301815291815281516020928301206001600160401b0388166000908152606690935291205490915081146110d55760405162461bcd60e51b815260206004820152603d602482015260008051602061548283398151915260448201527f6f7263656420626174636865732064617461206d757374206d61746368000000606482015260840161095b565b81606001516001600160401b031682604001516001600160401b031610156111745760405162461bcd60e51b8152602060048201526058602482015260008051602061548283398151915260448201527f6f7263656420626174636865732074696d657374616d70206d757374206265206064820152773134b3b3b2b91037b91032b8bab0b6103a3430b71036b4b760411b608482015260a40161095b565b506112ef565b602081015115806112035750606c5460208201516040516312bd9b1960e11b81526001600160a01b039092169163257b3632916111bd9160040190815260200190565b6020604051808303816000875af11580156111dc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112009190614f15565b15155b6112755760405162461bcd60e51b815260206004820152603a60248201527f506f6c79676f6e5a6b45564d3a3a73657175656e6365426174636865733a204760448201527f6c6f62616c206578697420726f6f74206d757374206578697374000000000000606482015260840161095b565b805151620493e0116112ef5760405162461bcd60e51b815260206004820152603a60248201527f506f6c79676f6e5a6b45564d3a3a73657175656e6365426174636865733a205460448201527f72616e73616374696f6e73206279746573206f766572666c6f77000000000000606482015260840161095b565b856001600160401b031681604001516001600160401b03161015801561132257504281604001516001600160401b031611155b6113945760405162461bcd60e51b815260206004820152603d60248201527f506f6c79676f6e5a6b45564d3a3a73657175656e6365426174636865733a205460448201527f696d657374616d70206d75737420626520696e736964652072616e6765000000606482015260840161095b565b805180516020918201208183015160408085015190516113bb948894939291339101614f2e565b60405160208183030381529060405280519060200120925084806113de90614ecc565b955050806040015195505080806113f490614f6d565b915050610fce565b506068546001600160401b03600160c01b9091048116908316111561146f5760405162461bcd60e51b815260206004820152603560248201526000805160206154828339815191526044820152746f7263652062617463686573206f766572666c6f7760581b606482015260840161095b565b60685460009061148f90600160801b90046001600160401b031684614f86565b6114a2906001600160401b031687614fae565b60408051606081018252848152426001600160401b03908116602080840191825260688054600160401b9081900485168688019081528c861660008181526067909552979093209551865592516001909501805492519585166001600160801b03199384161795851684029590951790945583548b841691161793029290921767ffffffffffffffff60801b1916600160801b928716929092029190911790556074549091506115779033903090849061155c9190614fc5565b606554600160581b90046001600160a01b03169291906130de565b61157f613149565b606854604051600160401b9091046001600160401b0316907f303446e6a8cb73c83dff421c0b1d5e5ce0719dab1bff13660fc254e58cc17fce90600090a250505050505050565b60655460ff16156115e95760405162461bcd60e51b815260040161095b90614e4e565b6072546001600160401b03878116600090815260676020526040902060010154429261162092600160c01b90910481169116614e23565b6001600160401b031611156116a95760405162461bcd60e51b815260206004820152604360248201527f506f6c79676f6e5a6b45564d3a3a766572696679426174636865733a2054727560448201527f737465642061676772656761746f722074696d656f7574206e6f7420657870696064820152621c995960ea1b608482015260a40161095b565b6103e86116b68888614f86565b6001600160401b0316106117325760405162461bcd60e51b815260206004820152603c60248201527f506f6c79676f6e5a6b45564d3a3a766572696679426174636865733a2043616e60448201527f6e6f74207665726966792074686174206d616e79206261746368657300000000606482015260840161095b565b61174288888888888888886131ed565b61174b866136f0565b607254600160801b90046001600160401b0316600003611813576069805467ffffffffffffffff19166001600160401b038881169182179092556000908152606d6020526040902085905560725416156117b057607280546001600160801b03191690555b606c546040516333d6247d60e01b8152600481018790526001600160a01b03909116906333d6247d90602401600060405180830381600087803b1580156117f657600080fd5b505af115801561180a573d6000803e3d6000fd5b505050506118c4565b61181b613149565b607280546001600160401b031690600061183483614ecc565b82546001600160401b039182166101009390930a92830292820219169190911790915560408051608081018252428316815289831660208083019182528284018b8152606084018b8152607254871660009081526071909352949091209251835492518616600160401b026001600160801b03199093169516949094171781559151600183015551600290910155505b60405184815233906001600160401b038816907f9c72852172521097ba7e1482e6b44b351323df0155f97f4ea18fcec28e1f5966906020015b60405180910390a35050505050505050565b606a546001600160a01b031633146119b95761192a81610bfc565b6119b95760405162461bcd60e51b815260206004820152605460248201527f506f6c79676f6e5a6b45564d3a3a636f6e736f6c696461746550656e64696e6760448201527f53746174653a2050656e64696e67207374617465206973206e6f7420726561646064820152731e481d1bc818994818dbdb9cdbdb1a59185d195960621b608482015260a40161095b565b6119c2816138d6565b50565b606e80546108b090614d90565b600054610100900460ff16158080156119f25750600054600160ff909116105b80611a0c5750303b158015611a0c575060005460ff166001145b611a6f5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161095b565b6000805460ff191660011790558015611a92576000805461ff0019166101001790555b606c80546001600160a01b03199081166001600160a01b038c81169190911790925560658054600160581b600160f81b031916600160581b8c851602179055606b805482168a841617905560708054909116918816919091179055611afa6020860186614b27565b607380546001600160a01b0319166001600160a01b0392909216919091179055611b2a6060860160408701614b27565b606980546001600160a01b0392909216600160401b02600160401b600160e01b0319909216919091179055611b6560c0860160a08701614b27565b606a80546001600160a01b0319166001600160a01b039290921691909117905560008052606d6020527fda90043ba5b4096ba14704bc227ab0d3167da15b887e62ab2e76e37daa711356849055611bc260e0860160c08701614733565b607280546001600160401b0392909216600160c01b026001600160c01b03909216919091179055611bf96040860160208701614733565b606c80546001600160401b0392909216600160a81b0267ffffffffffffffff60a81b19909216919091179055611c356080860160608701614733565b607280546001600160401b0392909216600160801b0267ffffffffffffffff60801b19909216919091179055611c7160a0860160808701614c09565b606c8054911515600160a01b0260ff60a01b19909216919091179055606e611c99848261502a565b50606f611ca6838261502a565b50670de0b6b3a7640000607455606580546affffffffffffffffffff0019166a03ea000000000000070800179055611cdc613abb565b8015611d22576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050565b6073546001600160a01b03163314611d575760405162461bcd60e51b815260040161095b90614dca565b60698054600160401b600160e01b031916600160401b6001600160a01b038416021790556040517ff54144f9611984021529f814a1cb6a41e22c58351510a0d9f7e822618abb9cc090610a5090839061471f565b6073546001600160a01b03163314611dd55760405162461bcd60e51b815260040161095b90614dca565b607380546001600160a01b0319166001600160a01b0383161790556040517f5a272403b402d892977df56625f4164ccaf70ca3863991c43ecfe76a6905b0a190610a5090839061471f565b611e28613b2f565b611e326000613b89565b565b6033546001600160a01b03163314612033576000611e506123d7565b9050806001600160401b0316826001600160401b031611611ec75760405162461bcd60e51b815260206004820152603c602482015260008051602061540283398151915260448201527f746174653a20426174636820616c726561647920766572696669656400000000606482015260840161095b565b6068546001600160401b03600160401b909104811690831611801590611f0957506001600160401b038083166000908152606760205260409020600101541615155b611f825760405162461bcd60e51b8152602060048201526050602482015260008051602061540283398151915260448201527f746174653a204261746368206e6f742073657175656e636564206f72206e6f7460648201526f20656e64206f662073657175656e636560801b608482015260a40161095b565b6001600160401b038083166000908152606760205260409020600101544291611fb09162093a809116614e23565b6001600160401b031611156120315760405162461bcd60e51b815260206004820152604d602482015260008051602061540283398151915260448201527f746174653a204167677265676174696f6e2068616c742074696d656f7574206960648201526c1cc81b9bdd08195e1c1a5c9959609a1b608482015260a40161095b565b505b6119c2613bdb565b60655460ff161561205e5760405162461bcd60e51b815260040161095b90614e4e565b61206f898989898989898989613c4b565b6001600160401b0386166000908152606d60209081526040918290205482519081529081018690527f1f44c21118c4603cfb4e1b621dbcfa2b73efcececee2b99b620b2953d33a7010910160405180910390a1611d22613bdb565b6073546001600160a01b031633146120f45760405162461bcd60e51b815260040161095b90614dca565b606c8054821515600160a01b0260ff60a01b199091161790556040517fbacda50a4a8575be1d91a7ebe29ee45056f3a94f12a2281eb6b43afa33bcefe690610a5090831515815260200190565b6065546040516370a0823160e01b81526000918291600160581b9091046001600160a01b0316906370a082319061217c90309060040161471f565b602060405180830381865afa158015612199573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121bd9190614f15565b905060006121c96123d7565b6068546001600160401b03600160401b82048116916121f991600160801b8204811691600160c01b900416614f86565b6122039190614e23565b61220d9190614f86565b6001600160401b0316905061222281836150ff565b9250505090565b6073546001600160a01b031633146122535760405162461bcd60e51b815260040161095b90614dca565b62093a806001600160401b03821611156122e75760405162461bcd60e51b815260206004820152604960248201527f506f6c79676f6e5a6b45564d3a3a73657450656e64696e67537461746554696d60448201527f656f75743a20457863656564206d61782068616c74206167677265676174696f6064820152681b881d1a5b595bdd5d60ba1b608482015260a40161095b565b60655460ff1661237c576072546001600160401b03600160801b90910481169082161061237c5760405162461bcd60e51b815260206004820152603f60248201527f506f6c79676f6e5a6b45564d3a3a73657450656e64696e67537461746554696d60448201527f656f75743a204e65772074696d656f7574206d757374206265206c6f77657200606482015260840161095b565b6072805467ffffffffffffffff60801b1916600160801b6001600160401b038416908102919091179091556040519081527fc4121f4e22c69632ebb7cf1f462be0511dc034f999b52013eddfb24aab765c7590602001610a50565b6072546000906001600160401b03161561241457506072546001600160401b03908116600090815260716020526040902054600160401b90041690565b506069546001600160401b031690565b6073546001600160a01b0316331461244e5760405162461bcd60e51b815260040161095b90614dca565b606e61245a828261502a565b507f6b8f723a4c7a5335cafae8a598a0aa0301be1387c037dccc085b62add6448b2081604051610a509190614678565b6073546001600160a01b031633146124b45760405162461bcd60e51b815260040161095b90614dca565b6065805468ffffffffffffffff0019166101006001600160401b038416908102919091179091556040519081527f03a12f7e53d2a9e31a9e913d85c12c4c38feb92abe003c111329298af088437f90602001610a50565b60655460ff161561252e5760405162461bcd60e51b815260040161095b90614e4e565b606c54600160a01b900460ff16151560011461255c5760405162461bcd60e51b815260040161095b90615113565b8051806125bf5760405162461bcd60e51b815260206004820152603f602482015260008051602061546283398151915260448201527f65733a204d75737420666f726365206174206c65617374203120626174636800606482015260840161095b565b6103e881106126305760405162461bcd60e51b8152602060048201526043602482015260008051602061546283398151915260448201527f65733a2043616e6e6f74207665726966792074686174206d616e79206261746360648201526268657360e81b608482015260a40161095b565b6068546001600160401b03600160c01b8204811691612658918491600160801b90041661517c565b11156126b45760405162461bcd60e51b81526020600482015260376024820152600080516020615462833981519152604482015276195cce88119bdc98d94818985d18da081a5b9d985b1a59604a1b606482015260840161095b565b6068546001600160401b03600160401b820481166000818152606760205260408120549193600160801b9004909216915b848110156128e257600086828151811061270157612701614eb6565b60200260200101519050838061271690614ecc565b94505060008160000151805190602001208260200151836040015160405160200161274393929190614ef2565b60408051601f1981840301815291815281516020928301206001600160401b0388166000908152606690935291205490915081146127e25760405162461bcd60e51b8152602060048201526042602482015260008051602061546283398151915260448201527f65733a20466f7263656420626174636865732064617461206d757374206d61746064820152610c6d60f31b608482015260a40161095b565b6127ed600188614fae565b830361288457426206978083604001516128079190614e23565b6001600160401b031611156128845760405162461bcd60e51b8152602060048201526049602482015260008051602061546283398151915260448201527f65733a20466f72636564206261746368206973206e6f7420696e2074696d656f6064820152681d5d081c195c9a5bd960ba1b608482015260a40161095b565b81518051602091820120818401516040516128a793889392914291339101614f2e565b60405160208183030381529060405280519060200120935085806128ca90614ecc565b965050505080806128da90614f6d565b9150506126e5565b506068805467ffffffffffffffff1916426001600160401b03908116918217808455604080516060810182528681526020808201958652600160401b9384900485168284019081528a861660008181526067909352848320935184559651600193909301805491519387166001600160801b0319909216919091179286168502929092179091558554600160401b600160c01b03191694830267ffffffffffffffff60801b191694909417600160801b88851602179485905551930416917f648a61dd2438f072f5a1960939abd30f37aea80d2e94c9792ad142d3e0a490a49190a25050505050565b6073546001600160a01b031633146129f55760405162461bcd60e51b815260040161095b90614dca565b607060009054906101000a90046001600160a01b03166001600160a01b031663dbc169766040518163ffffffff1660e01b8152600401600060405180830381600087803b158015612a4557600080fd5b505af1158015612a59573d6000803e3d6000fd5b50505050611e32614281565b606a546001600160a01b03163314612a8f5760405162461bcd60e51b815260040161095b90615194565b612aa0898989898989898989613c4b565b6069805467ffffffffffffffff19166001600160401b038881169182179092556000908152606d602052604090208590556072541615612aeb57607280546001600160801b03191690555b606c546040516333d6247d60e01b8152600481018790526001600160a01b03909116906333d6247d90602401600060405180830381600087803b158015612b3157600080fd5b505af1158015612b45573d6000803e3d6000fd5b5050607280546001600160c01b031661127560c71b179055505060405184815233906001600160401b038816907fcc1b5520188bf1dd3e63f98164b577c4d75c11a619ddea692112f0d1aec4cf729060200160405180910390a3505050505050505050565b60655460ff1615612bcd5760405162461bcd60e51b815260040161095b90614e4e565b606c54600160a01b900460ff161515600114612bfb5760405162461bcd60e51b815260040161095b90615113565b6000612c0660745490565b905081811115612c6b5760405162461bcd60e51b815260206004820152602a60248201527f506f6c79676f6e5a6b45564d3a3a666f72636542617463683a204e6f7420656e6044820152696f756768206d6174696360b01b606482015260840161095b565b620493e0835110612cdc5760405162461bcd60e51b815260206004820152603560248201527f506f6c79676f6e5a6b45564d3a3a666f72636542617463683a205472616e73616044820152746374696f6e73206279746573206f766572666c6f7760581b606482015260840161095b565b606554612cfb90600160581b90046001600160a01b03163330846130de565b606c5460408051633ed691ef60e01b815290516000926001600160a01b031691633ed691ef9160048083019260209291908290030181865afa158015612d45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d699190614f15565b60688054919250600160c01b9091046001600160401b0316906018612d8d83614ecc565b91906101000a8154816001600160401b0302191690836001600160401b031602179055505083805190602001208142604051602001612dce93929190614ef2565b60408051808303601f190181529181528151602092830120606854600160c01b90046001600160401b031660009081526066909352912055323303612e7257606854604080518381523360208201526060918101829052600091810191909152600160c01b9091046001600160401b0316907ff94bb37db835f1ab585ee00041849a09b12cd081d77fa15ca070757619cbc9319060800160405180910390a2612ecd565b606860189054906101000a90046001600160401b03166001600160401b03167ff94bb37db835f1ab585ee00041849a09b12cd081d77fa15ca070757619cbc931823387604051612ec4939291906151f1565b60405180910390a25b50505050565b606a546001600160a01b03163314612efd5760405162461bcd60e51b815260040161095b90615194565b612f0d88888888888888886131ed565b6069805467ffffffffffffffff19166001600160401b038881169182179092556000908152606d602052604090208590556072541615612f5857607280546001600160801b03191690555b606c546040516333d6247d60e01b8152600481018790526001600160a01b03909116906333d6247d90602401600060405180830381600087803b158015612f9e57600080fd5b505af1158015612fb2573d6000803e3d6000fd5b50506040518681523392506001600160401b03891691507f0c0ce073a7d7b5850c04ccc4b20ee7d3179d5f57d0ac44399565792c0f72fce7906020016118fd565b6073546001600160a01b0316331461301d5760405162461bcd60e51b815260040161095b90614dca565b606a80546001600160a01b0319166001600160a01b0383161790556040517f61f8fec29495a3078e9271456f05fb0707fd4e41f7661865f80fc437d06681ca90610a5090839061471f565b613070613b2f565b6001600160a01b0381166130d55760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161095b565b6119c281613b89565b6040516001600160a01b0380851660248301528316604482015260648101829052612ecd9085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915261432e565b6072546001600160401b03600160401b8204811691161115611e325760725460009061318690600160401b90046001600160401b03166001614e23565b905061319181610bfc565b156119c2576072546000906002906131b39084906001600160401b0316614f86565b6131bd9190615224565b6131c79083614e23565b90506131d281610bfc565b156131e4576131e0816138d6565b5050565b6131e0826138d6565b6000806131f86123d7565b90506001600160401b038a161561335e576072546001600160401b03908116908b1611156132b05760405162461bcd60e51b815260206004820152605960248201527f506f6c79676f6e5a6b45564d3a3a5f766572696679426174636865733a20706560448201527f6e64696e6753746174654e756d206d757374206265206c657373206f7220657160648201527875616c207468616e206c61737450656e64696e67537461746560381b608482015260a40161095b565b6001600160401b03808b1660009081526071602052604090206002810154815490945090918b8116600160401b90920416146133585760405162461bcd60e51b815260206004820152604d602482015260008051602061542283398151915260448201527f69744e756d4261746368206d757374206d61746368207468652070656e64696e60648201526c0ce40e6e8c2e8ca40c4c2e8c6d609b1b608482015260a40161095b565b50613484565b6001600160401b0389166000908152606d60205260409020549150816133e85760405162461bcd60e51b815260206004820152604460248201819052600080516020615422833981519152908201527f69744e756d426174636820737461746520726f6f7420646f6573206e6f7420656064820152631e1a5cdd60e21b608482015260a40161095b565b806001600160401b0316896001600160401b031611156134845760405162461bcd60e51b815260206004820152605e602482015260008051602061542283398151915260448201527f69744e756d4261746368206d757374206265206c657373206f7220657175616c60648201527f207468616e2063757272656e744c617374566572696669656442617463680000608482015260a40161095b565b806001600160401b0316886001600160401b03161161352c5760405162461bcd60e51b815260206004820152605860248201527f506f6c79676f6e5a6b45564d3a3a5f766572696679426174636865733a20666960448201527f6e616c4e65774261746368206d75737420626520626967676572207468616e206064820152770c6eae4e4cadce898c2e6e8accae4d2ccd2cac884c2e8c6d60431b608482015260a40161095b565b600061353b8a8a8a868b610a5b565b905060007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001600283604051613570919061524a565b602060405180830381855afa15801561358d573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906135b09190614f15565b6135ba9190615266565b606b546040805160208101825283815290516343753b4d60e01b81529293506001600160a01b03909116916343753b4d916135fe918b918b918b919060040161527a565b602060405180830381865afa15801561361b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061363f91906152f4565b61369f5760405162461bcd60e51b815260206004820152602b60248201527f506f6c79676f6e5a6b45564d3a3a5f766572696679426174636865733a20496e60448201526a3b30b634b210383937b7b360a91b606482015260840161095b565b6136e2336136ad858d614f86565b6001600160401b03166136be612141565b6136c89190614fc5565b606554600160581b90046001600160a01b03169190614405565b505050505050505050505050565b60006136fa6123d7565b90508160008061370a8484614f86565b6001600160401b031690505b836001600160401b0316836001600160401b0316146137bc576001600160401b03808416600090815260676020526040902060655460018201549192610100909104811691613766911642614fae565b11156137a157600181015461378b90600160401b90046001600160401b031685614f86565b61379e906001600160401b03168461517c565b92505b60010154600160401b90046001600160401b03169250613716565b60006137c88383614fae565b9050828110156138425760006137de8285614fae565b9050600c81116137ee57806137f1565b600c5b90506137fe816003614fc5565b61380990600a6153f5565b606554613822908390600160481b900461ffff166153f5565b60745461382f9190614fc5565b61383991906150ff565b607455506138ce565b600061384e8483614fae565b9050600c811161385e5780613861565b600c5b90506000613870826003614fc5565b61387b90600a6153f5565b606554613894908490600160481b900461ffff166153f5565b6074546138a19190614fc5565b6138ab91906150ff565b9050806074546074546138be9190614fc5565b6138c891906150ff565b60745550505b505050505050565b6001600160401b0381161580159061390357506072546001600160401b03600160401b9091048116908216115b801561391e57506072546001600160401b0390811690821611155b6139905760405162461bcd60e51b815260206004820152603f60248201527f506f6c79676f6e5a6b45564d3a3a5f636f6e736f6c696461746550656e64696e60448201527f6753746174653a2070656e64696e6753746174654e756d20696e76616c696400606482015260840161095b565b6001600160401b038181166000818152607160209081526040808320805460698054600160401b9283900490981667ffffffffffffffff19909816881790556002820154878652606d90945293829020929092556072805467ffffffffffffffff60401b19169390940292909217909255606c54600183015491516333d6247d60e01b815260048101929092529192916001600160a01b0316906333d6247d90602401600060405180830381600087803b158015613a4d57600080fd5b505af1158015613a61573d6000803e3d6000fd5b50505050826001600160401b0316816001600160401b03167f328d3c6c0fd6f1be0515e422f2d87e59f25922cbc2233568515a0c4bc3f8510e8460020154604051613aae91815260200190565b60405180910390a3505050565b600054610100900460ff16613b265760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b606482015260840161095b565b611e3233613b89565b6033546001600160a01b03163314611e325760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161095b565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b607060009054906101000a90046001600160a01b03166001600160a01b0316632072f6c56040518163ffffffff1660e01b8152600401600060405180830381600087803b158015613c2b57600080fd5b505af1158015613c3f573d6000803e3d6000fd5b50505050611e32614435565b60006001600160401b038a1615613dbb576072546001600160401b03908116908b161115613d035760405162461bcd60e51b8152602060048201526065602482015260008051602061544283398151915260448201527f696e6753746174653a2070656e64696e6753746174654e756d206d757374206260648201527f65206c657373206f7220657175616c207468616e206c61737450656e64696e67608482015264537461746560d81b60a482015260c40161095b565b506001600160401b03808a1660009081526071602052604090206002810154815490928a8116600160401b9092041614613db55760405162461bcd60e51b8152602060048201526059602482015260008051602061544283398151915260448201527f696e6753746174653a20696e69744e756d4261746368206d757374206d6174636064820152780d040e8d0ca40e0cadcc8d2dcce40e6e8c2e8ca40c4c2e8c6d603b1b608482015260a40161095b565b50613ef4565b506001600160401b0387166000908152606d602052604090205480613e4f5760405162461bcd60e51b8152602060048201526050602482015260008051602061544283398151915260448201527f696e6753746174653a20696e69744e756d426174636820737461746520726f6f60648201526f1d08191bd95cc81b9bdd08195e1a5cdd60821b608482015260a40161095b565b6069546001600160401b039081169089161115613ef45760405162461bcd60e51b8152602060048201526063602482015260008051602061544283398151915260448201527f696e6753746174653a20696e69744e756d4261746368206d757374206265206c60648201527f657373206f7220657175616c207468616e206c617374566572696669656442616084820152620e8c6d60eb1b60a482015260c40161095b565b6072546001600160401b03908116908a1611801590613f245750896001600160401b0316896001600160401b0316115b8015613f4557506072546001600160401b03600160401b9091048116908a16115b613fb65760405162461bcd60e51b8152602060048201526048602482015260008051602061544283398151915260448201527f696e6753746174653a2066696e616c50656e64696e6753746174654e756d20696064820152671b98dbdc9c9958dd60c21b608482015260a40161095b565b6001600160401b03898116600090815260716020526040902054600160401b900481169088161461406f5760405162461bcd60e51b8152602060048201526063602482015260008051602061544283398151915260448201527f696e6753746174653a2066696e616c4e65774261746368206d7573742062652060648201527f657175616c207468616e2063757272656e744c617374566572696669656442616084820152620e8c6d60eb1b60a482015260c40161095b565b600061407e898989858a610a5b565b905060007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000016002836040516140b3919061524a565b602060405180830381855afa1580156140d0573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906140f39190614f15565b6140fd9190615266565b606b546040805160208101825283815290516343753b4d60e01b81529293506001600160a01b03909116916343753b4d91614141918a918a918a919060040161527a565b602060405180830381865afa15801561415e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061418291906152f4565b6141dc5760405162461bcd60e51b8152602060048201526037602482015260008051602061544283398151915260448201527634b733a9ba30ba329d1024b73b30b634b210383937b7b360491b606482015260840161095b565b6001600160401b038b166000908152607160205260409020600201548790036136e25760405162461bcd60e51b815260206004820152605b602482015260008051602061544283398151915260448201527f696e6753746174653a2053746f72656420726f6f74206d75737420626520646960648201527f66666572656e74207468616e206e657720737461746520726f6f740000000000608482015260a40161095b565b60655460ff166142f95760405162461bcd60e51b815260206004820152603b60248201527f456d657267656e63794d616e616765723a3a6966456d657267656e637953746160448201527f74653a206f6e6c7920696620656d657267656e63792073746174650000000000606482015260840161095b565b6065805460ff191690556040517f1e5e34eea33501aecf2ebec9fe0e884a40804275ea7fe10b2ba084c8374308b390600090a1565b6000614383826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166144909092919063ffffffff16565b80519091501561440057808060200190518101906143a191906152f4565b6144005760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840161095b565b505050565b6040516001600160a01b03831660248201526044810182905261440090849063a9059cbb60e01b90606401613112565b60655460ff16156144585760405162461bcd60e51b815260040161095b90614e4e565b6065805460ff191660011790556040517f2261efe5aef6fedc1fd1550b25facc9181745623049c7901287030b9ad1a549790600090a1565b606061449f84846000856144a7565b949350505050565b6060824710156145085760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b606482015260840161095b565b600080866001600160a01b03168587604051614524919061524a565b60006040518083038185875af1925050503d8060008114614561576040519150601f19603f3d011682016040523d82523d6000602084013e614566565b606091505b509150915061457787838387614582565b979650505050505050565b606083156145f15782516000036145ea576001600160a01b0385163b6145ea5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161095b565b508161449f565b61449f83838151156146065781518083602001fd5b8060405162461bcd60e51b815260040161095b9190614678565b60005b8381101561463b578181015183820152602001614623565b83811115612ecd5750506000910152565b60008151808452614664816020860160208601614620565b601f01601f19169290920160200192915050565b60208152600061468b602083018461464c565b9392505050565b6000602082840312156146a457600080fd5b813561ffff8116811461468b57600080fd5b80356001600160401b03811681146146cd57600080fd5b919050565b600080600080600060a086880312156146ea57600080fd5b6146f3866146b6565b9450614701602087016146b6565b94979496505050506040830135926060810135926080909101359150565b6001600160a01b0391909116815260200190565b60006020828403121561474557600080fd5b61468b826146b6565b634e487b7160e01b600052604160045260246000fd5b604051608081016001600160401b03811182821017156147865761478661474e565b60405290565b604051606081016001600160401b03811182821017156147865761478661474e565b604051601f8201601f191681016001600160401b03811182821017156147d6576147d661474e565b604052919050565b60006001600160401b038211156147f7576147f761474e565b5060051b60200190565b600082601f83011261481257600080fd5b81356001600160401b0381111561482b5761482b61474e565b61483e601f8201601f19166020016147ae565b81815284602083860101111561485357600080fd5b816020850160208301376000918101602001919091529392505050565b6000602080838503121561488357600080fd5b82356001600160401b038082111561489a57600080fd5b818501915085601f8301126148ae57600080fd5b81356148c16148bc826147de565b6147ae565b81815260059190911b830184019084810190888311156148e057600080fd5b8585015b83811015614979578035858111156148fc5760008081fd5b86016080818c03601f19018113156149145760008081fd5b61491c614764565b898301358881111561492e5760008081fd5b61493c8e8c83870101614801565b8252506040808401358b83015260606149568186016146b6565b828401526149658486016146b6565b9083015250855250509186019186016148e4565b5098975050505050505050565b806040810183101561499757600080fd5b92915050565b806080810183101561499757600080fd5b6000806000806000806000806101a0898b0312156149cb57600080fd5b6149d4896146b6565b97506149e260208a016146b6565b96506149f060408a016146b6565b95506060890135945060808901359350614a0d8a60a08b01614986565b9250614a1c8a60e08b0161499d565b9150614a2c8a6101608b01614986565b90509295985092959890939650565b6001600160a01b03811681146119c257600080fd5b600080600080600080600080888a036101c0811215614a6e57600080fd5b8935614a7981614a3b565b985060208a0135614a8981614a3b565b975060408a0135614a9981614a3b565b965060608a0135614aa981614a3b565b955060e0607f1982011215614abd57600080fd5b5060808901935061016089013592506101808901356001600160401b0380821115614ae757600080fd5b614af38c838d01614801565b93506101a08b0135915080821115614b0a57600080fd5b50614b178b828c01614801565b9150509295985092959890939650565b600060208284031215614b3957600080fd5b813561468b81614a3b565b60008060008060008060008060006101c08a8c031215614b6357600080fd5b614b6c8a6146b6565b9850614b7a60208b016146b6565b9750614b8860408b016146b6565b9650614b9660608b016146b6565b955060808a0135945060a08a01359350614bb38b60c08c01614986565b9250614bc38b6101008c0161499d565b9150614bd38b6101808c01614986565b90509295985092959850929598565b600060208284031215614bf457600080fd5b5035919050565b80151581146119c257600080fd5b600060208284031215614c1b57600080fd5b813561468b81614bfb565b600060208284031215614c3857600080fd5b81356001600160401b03811115614c4e57600080fd5b61449f84828501614801565b60006020808385031215614c6d57600080fd5b82356001600160401b0380821115614c8457600080fd5b818501915085601f830112614c9857600080fd5b8135614ca66148bc826147de565b81815260059190911b83018401908481019088831115614cc557600080fd5b8585015b8381101561497957803585811115614ce15760008081fd5b86016060818c03601f1901811315614cf95760008081fd5b614d0161478c565b8983013588811115614d135760008081fd5b614d218e8c83870101614801565b8252506040808401358b830152614d398385016146b6565b9082015285525050918601918601614cc9565b60008060408385031215614d5f57600080fd5b82356001600160401b03811115614d7557600080fd5b614d8185828601614801565b95602094909401359450505050565b600181811c90821680614da457607f821691505b602082108103614dc457634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526023908201527f506f6c79676f6e5a6b45564d3a3a6f6e6c7941646d696e3a204f6e6c7920616460408201526236b4b760e91b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b60006001600160401b03808316818516808303821115614e4557614e45614e0d565b01949350505050565b60208082526042908201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960408201527f53746174653a206f6e6c79206966206e6f7420656d657267656e637920737461606082015261746560f01b608082015260a00190565b634e487b7160e01b600052603260045260246000fd5b60006001600160401b03808316818103614ee857614ee8614e0d565b6001019392505050565b928352602083019190915260c01b6001600160c01b031916604082015260480190565b600060208284031215614f2757600080fd5b5051919050565b9485526020850193909352604084019190915260c01b6001600160c01b0319166060808401919091521b6001600160601b0319166068820152607c0190565b600060018201614f7f57614f7f614e0d565b5060010190565b60006001600160401b0383811690831681811015614fa657614fa6614e0d565b039392505050565b600082821015614fc057614fc0614e0d565b500390565b6000816000190483118215151615614fdf57614fdf614e0d565b500290565b601f82111561440057600081815260208120601f850160051c8101602086101561500b5750805b601f850160051c820191505b818110156138ce57828155600101615017565b81516001600160401b038111156150435761504361474e565b615057816150518454614d90565b84614fe4565b602080601f83116001811461508c57600084156150745750858301515b600019600386901b1c1916600185901b1785556138ce565b600085815260208120601f198616915b828110156150bb5788860151825594840194600190910190840161509c565b50858210156150d95787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601260045260246000fd5b60008261510e5761510e6150e9565b500490565b60208082526043908201527f506f6c79676f6e5a6b45564d3a3a6973466f7263654261746368416c6c6f776560408201527f643a204f6e6c7920696620666f72636520626174636820697320617661696c61606082015262626c6560e81b608082015260a00190565b6000821982111561518f5761518f614e0d565b500190565b6020808252603c908201527f506f6c79676f6e5a6b45564d3a3a6f6e6c79547275737465644167677265676160408201527f746f723a204f6e6c7920747275737465642061676772656761746f7200000000606082015260800190565b8381526001600160a01b038316602082015260606040820181905260009061521b9083018461464c565b95945050505050565b60006001600160401b038084168061523e5761523e6150e9565b92169190910492915050565b6000825161525c818460208701614620565b9190910192915050565b600082615275576152756150e9565b500690565b61012081016040808784376000838201818152879190815b60028110156152b257848483379084018281529284019290600101615292565b5050828760c0870137610100850181815286935091505b60018110156152e85782518252602092830192909101906001016152c9565b50505095945050505050565b60006020828403121561530657600080fd5b815161468b81614bfb565b600181815b8085111561534c57816000190482111561533257615332614e0d565b8085161561533f57918102915b93841c9390800290615316565b509250929050565b60008261536357506001614997565b8161537057506000614997565b81600181146153865760028114615390576153ac565b6001915050614997565b60ff8411156153a1576153a1614e0d565b50506001821b614997565b5060208310610133831016604e8410600b84101617156153cf575081810a614997565b6153d98383615311565b80600019048211156153ed576153ed614e0d565b029392505050565b600061468b838361535456fe506f6c79676f6e5a6b45564d3a3a6163746976617465456d657267656e637953506f6c79676f6e5a6b45564d3a3a5f766572696679426174636865733a20696e506f6c79676f6e5a6b45564d3a3a5f70726f766544697374696e637450656e64506f6c79676f6e5a6b45564d3a3a73657175656e6365466f7263654261746368506f6c79676f6e5a6b45564d3a3a73657175656e6365426174636865733a2046a264697066735822122062aa0abf6eb0b3c09830fead437d054af78f3ffc9b7c55711fa2a8d7f0eee28164736f6c634300080f0033", + "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061032f5760003560e01c80638da5cb5b116101b4578063cfa8ed47116100fa578063e7a7ed021161009d578063e7a7ed021461080e578063e8bf92ed14610828578063eaeb077b1461083b578063edc411211461084e578063f14916d614610861578063f2fde38b14610874578063f851a44014610887578063f8b823e41461089a57600080fd5b8063cfa8ed471461077c578063d02103ca14610796578063d8d1091b146107a9578063d8f54db0146107bc578063d939b315146107d0578063dbc16976146107ea578063e11f3f18146107f2578063e217cfd61461080557600080fd5b8063ab9fc5ef11610162578063ab9fc5ef14610688578063adc879e914610692578063afd23cbe146106ac578063b4d63f58146106d4578063b6b0b09714610734578063c0ed84e01461074e578063c89e42df14610756578063cf1363061461076957600080fd5b80638da5cb5b1461062157806399f5634e146106325780639c9f3dfe1461063a5780639eb831b91461064d5780639f0d039d14610655578063a3c573eb1461065d578063aa58bad61461067057600080fd5b80634a910e6a11610279578063715018a611610227578063715018a61461053b5780637215541a1461054357806375c508b3146105565780637fcb365314610569578063837a47381461057c578063841b24d7146105ea5780638b48931e146106045780638c4a0af71461060e57600080fd5b80634a910e6a146104a75780635392c5e0146104ba578063542028d5146104da57806360943d6a146104e25780636b8616ce146104f55780636ff512cc14610515578063704b6c021461052857600080fd5b8063383b3be8116102e1578063383b3be8146103fa578063394218e91461040d5780633c15826714610420578063423fa85614610433578063456052671461044d578063458c0477146104675780634834a3431461047a5780634a1a89a71461048d57600080fd5b8063107bf28c1461033457806315064c96146103525780631816b7e51461036f57806319d8ac6114610384578063220d7899146103af57806329878983146103c25780632d0889d3146103e2575b600080fd5b61033c6108a3565b6040516103499190614678565b60405180910390f35b60655461035f9060ff1681565b6040519015158152602001610349565b61038261037d366004614692565b610931565b005b606854610397906001600160401b031681565b6040516001600160401b039091168152602001610349565b61033c6103bd3660046146d2565b610a5b565b606a546103d5906001600160a01b031681565b604051610349919061471f565b6103ec620493e081565b604051908152602001610349565b61035f610408366004614733565b610bfc565b61038261041b366004614733565b610c43565b61038261042e366004614870565b610dff565b60685461039790600160401b90046001600160401b031681565b60685461039790600160801b90046001600160401b031681565b607254610397906001600160401b031681565b6103826104883660046149ae565b6115c6565b60725461039790600160401b90046001600160401b031681565b6103826104b5366004614733565b61190f565b6103ec6104c8366004614733565b606d6020526000908152604090205481565b61033c6119c5565b6103826104f0366004614a50565b6119d2565b6103ec610503366004614733565b60666020526000908152604090205481565b610382610523366004614b27565b611d2d565b610382610536366004614b27565b611dab565b610382611e20565b610382610551366004614733565b611e34565b610382610564366004614b44565b61203b565b606954610397906001600160401b031681565b6105bf61058a366004614be2565b6071602052600090815260409020805460018201546002909201546001600160401b0380831693600160401b90930416919084565b604080516001600160401b039586168152949093166020850152918301526060820152608001610349565b60725461039790600160c01b90046001600160401b031681565b61039762093a8081565b61038261061c366004614c09565b6120ca565b6033546001600160a01b03166103d5565b6103ec612141565b610382610648366004614733565b612229565b6103ec600c81565b6074546103ec565b6070546103d5906001600160a01b031681565b6065546103979061010090046001600160401b031681565b6103976206978081565b606c5461039790600160a81b90046001600160401b031681565b6065546106c190600160481b900461ffff1681565b60405161ffff9091168152602001610349565b61070f6106e2366004614733565b606760205260009081526040902080546001909101546001600160401b0380821691600160401b90041683565b604080519384526001600160401b039283166020850152911690820152606001610349565b6065546103d590600160581b90046001600160a01b031681565b6103976123d7565b610382610764366004614c26565b612424565b610382610777366004614733565b61248a565b6069546103d590600160401b90046001600160a01b031681565b606c546103d5906001600160a01b031681565b6103826107b7366004614c5a565b61250b565b606c5461035f90600160a01b900460ff1681565b60725461039790600160801b90046001600160401b031681565b6103826129cb565b610382610800366004614b44565b612a65565b6103976103e881565b60685461039790600160c01b90046001600160401b031681565b606b546103d5906001600160a01b031681565b610382610849366004614d4c565b612baa565b61038261085c3660046149ae565b612ed3565b61038261086f366004614b27565b612ff3565b610382610882366004614b27565b613068565b6073546103d5906001600160a01b031681565b6103ec60745481565b606f80546108b090614d90565b80601f01602080910402602001604051908101604052809291908181526020018280546108dc90614d90565b80156109295780601f106108fe57610100808354040283529160200191610929565b820191906000526020600020905b81548152906001019060200180831161090c57829003601f168201915b505050505081565b6073546001600160a01b031633146109645760405162461bcd60e51b815260040161095b90614dca565b60405180910390fd5b6103e88161ffff161015801561097f57506104008161ffff16105b610a045760405162461bcd60e51b815260206004820152604a60248201527f506f6c79676f6e5a6b45564d3a3a7365744d756c7469706c696572426174636860448201527f4665653a206e65774d756c7469706c696572426174636846656520696e636f72606482015269726563742072616e676560b01b608482015260a40161095b565b6065805461ffff60481b1916600160481b61ffff8416908102919091179091556040519081527f7019933d795eba185c180209e8ae8bffbaa25bcef293364687702c31f4d302c5906020015b60405180910390a150565b6001600160401b03808616600081815260676020526040808220549388168252902054606092911580610a8d57508115155b610b01576040805162461bcd60e51b81526020600482015260248101919091527f506f6c79676f6e5a6b45564d3a3a676574496e707574536e61726b427974657360448201527f3a206f6c64416363496e7075744861736820646f6573206e6f74206578697374606482015260840161095b565b80610b76576040805162461bcd60e51b81526020600482015260248101919091527f506f6c79676f6e5a6b45564d3a3a676574496e707574536e61726b427974657360448201527f3a206e6577416363496e7075744861736820646f6573206e6f74206578697374606482015260840161095b565b606c54604080516001600160601b03193360601b166020820152603481019790975260548701939093526001600160c01b031960c0998a1b81166074880152600160a81b909104891b8116607c870152608486019490945260a485015260c4840194909452509290931b90911660e4830152805180830360cc01815260ec909201905290565b6072546001600160401b0382811660009081526071602052604081205490924292610c3292600160801b90920481169116614e23565b6001600160401b0316111592915050565b6073546001600160a01b03163314610c6d5760405162461bcd60e51b815260040161095b90614dca565b62093a806001600160401b0382161115610d065760405162461bcd60e51b815260206004820152604e60248201527f506f6c79676f6e5a6b45564d3a3a73657454727573746564416767726567617460448201527f6f7254696d656f75743a20457863656564206d61782068616c7420616767726560648201526d19d85d1a5bdb881d1a5b595bdd5d60921b608482015260a40161095b565b60655460ff16610da9576072546001600160401b03600160c01b909104811690821610610da95760405162461bcd60e51b8152602060048201526044602482018190527f506f6c79676f6e5a6b45564d3a3a736574547275737465644167677265676174908201527f6f7254696d656f75743a204e65772074696d656f7574206d757374206265206c60648201526337bbb2b960e11b608482015260a40161095b565b607280546001600160c01b0316600160c01b6001600160401b038416908102919091179091556040519081527f1f4fa24c2e4bad19a7f3ec5c5485f70d46c798461c2e684f55bbd0fc661373a190602001610a50565b60655460ff1615610e225760405162461bcd60e51b815260040161095b90614e4e565b606954600160401b90046001600160a01b03163314610ea95760405162461bcd60e51b815260206004820152603a60248201527f506f6c79676f6e5a6b45564d3a3a6f6e6c795472757374656453657175656e6360448201527f65723a204f6e6c7920747275737465642073657175656e636572000000000000606482015260840161095b565b805180610f1e5760405162461bcd60e51b815260206004820152603d60248201527f506f6c79676f6e5a6b45564d3a3a73657175656e6365426174636865733a204160448201527f74206c65617374206d7573742073657175656e63652031206261746368000000606482015260840161095b565b6103e88110610f97576040805162461bcd60e51b81526020600482015260248101919091527f506f6c79676f6e5a6b45564d3a3a73657175656e6365426174636865733a204360448201527f616e6e6f742073657175656e63652074686174206d616e792062617463686573606482015260840161095b565b6068546001600160401b03600160401b82048116600081815260676020526040812054838516949293600160801b90930490921691905b858110156113fc576000878281518110610fea57610fea614eb6565b60200260200101519050600081606001516001600160401b0316111561117a578361101481614ecc565b94505060008160000151805190602001208260200151836060015160405160200161104193929190614ef2565b60408051601f1981840301815291815281516020928301206001600160401b0388166000908152606690935291205490915081146110d55760405162461bcd60e51b815260206004820152603d602482015260008051602061548283398151915260448201527f6f7263656420626174636865732064617461206d757374206d61746368000000606482015260840161095b565b81606001516001600160401b031682604001516001600160401b031610156111745760405162461bcd60e51b8152602060048201526058602482015260008051602061548283398151915260448201527f6f7263656420626174636865732074696d657374616d70206d757374206265206064820152773134b3b3b2b91037b91032b8bab0b6103a3430b71036b4b760411b608482015260a40161095b565b506112ef565b602081015115806112035750606c5460208201516040516312bd9b1960e11b81526001600160a01b039092169163257b3632916111bd9160040190815260200190565b6020604051808303816000875af11580156111dc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112009190614f15565b15155b6112755760405162461bcd60e51b815260206004820152603a60248201527f506f6c79676f6e5a6b45564d3a3a73657175656e6365426174636865733a204760448201527f6c6f62616c206578697420726f6f74206d757374206578697374000000000000606482015260840161095b565b805151620493e0116112ef5760405162461bcd60e51b815260206004820152603a60248201527f506f6c79676f6e5a6b45564d3a3a73657175656e6365426174636865733a205460448201527f72616e73616374696f6e73206279746573206f766572666c6f77000000000000606482015260840161095b565b856001600160401b031681604001516001600160401b03161015801561132257504281604001516001600160401b031611155b6113945760405162461bcd60e51b815260206004820152603d60248201527f506f6c79676f6e5a6b45564d3a3a73657175656e6365426174636865733a205460448201527f696d657374616d70206d75737420626520696e736964652072616e6765000000606482015260840161095b565b805180516020918201208183015160408085015190516113bb948894939291339101614f2e565b60405160208183030381529060405280519060200120925084806113de90614ecc565b955050806040015195505080806113f490614f6d565b915050610fce565b506068546001600160401b03600160c01b9091048116908316111561146f5760405162461bcd60e51b815260206004820152603560248201526000805160206154828339815191526044820152746f7263652062617463686573206f766572666c6f7760581b606482015260840161095b565b60685460009061148f90600160801b90046001600160401b031684614f86565b6114a2906001600160401b031687614fae565b60408051606081018252848152426001600160401b03908116602080840191825260688054600160401b9081900485168688019081528c861660008181526067909552979093209551865592516001909501805492519585166001600160801b03199384161795851684029590951790945583548b841691161793029290921767ffffffffffffffff60801b1916600160801b928716929092029190911790556074549091506115779033903090849061155c9190614fc5565b606554600160581b90046001600160a01b03169291906130de565b61157f613149565b606854604051600160401b9091046001600160401b0316907f303446e6a8cb73c83dff421c0b1d5e5ce0719dab1bff13660fc254e58cc17fce90600090a250505050505050565b60655460ff16156115e95760405162461bcd60e51b815260040161095b90614e4e565b6072546001600160401b03878116600090815260676020526040902060010154429261162092600160c01b90910481169116614e23565b6001600160401b031611156116a95760405162461bcd60e51b815260206004820152604360248201527f506f6c79676f6e5a6b45564d3a3a766572696679426174636865733a2054727560448201527f737465642061676772656761746f722074696d656f7574206e6f7420657870696064820152621c995960ea1b608482015260a40161095b565b6103e86116b68888614f86565b6001600160401b0316106117325760405162461bcd60e51b815260206004820152603c60248201527f506f6c79676f6e5a6b45564d3a3a766572696679426174636865733a2043616e60448201527f6e6f74207665726966792074686174206d616e79206261746368657300000000606482015260840161095b565b61174288888888888888886131ed565b61174b866136f0565b607254600160801b90046001600160401b0316600003611813576069805467ffffffffffffffff19166001600160401b038881169182179092556000908152606d6020526040902085905560725416156117b057607280546001600160801b03191690555b606c546040516333d6247d60e01b8152600481018790526001600160a01b03909116906333d6247d90602401600060405180830381600087803b1580156117f657600080fd5b505af115801561180a573d6000803e3d6000fd5b505050506118c4565b61181b613149565b607280546001600160401b031690600061183483614ecc565b82546001600160401b039182166101009390930a92830292820219169190911790915560408051608081018252428316815289831660208083019182528284018b8152606084018b8152607254871660009081526071909352949091209251835492518616600160401b026001600160801b03199093169516949094171781559151600183015551600290910155505b60405184815233906001600160401b038816907f9c72852172521097ba7e1482e6b44b351323df0155f97f4ea18fcec28e1f5966906020015b60405180910390a35050505050505050565b606a546001600160a01b031633146119b95761192a81610bfc565b6119b95760405162461bcd60e51b815260206004820152605460248201527f506f6c79676f6e5a6b45564d3a3a636f6e736f6c696461746550656e64696e6760448201527f53746174653a2050656e64696e67207374617465206973206e6f7420726561646064820152731e481d1bc818994818dbdb9cdbdb1a59185d195960621b608482015260a40161095b565b6119c2816138d6565b50565b606e80546108b090614d90565b600054610100900460ff16158080156119f25750600054600160ff909116105b80611a0c5750303b158015611a0c575060005460ff166001145b611a6f5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161095b565b6000805460ff191660011790558015611a92576000805461ff0019166101001790555b606c80546001600160a01b03199081166001600160a01b038c81169190911790925560658054600160581b600160f81b031916600160581b8c851602179055606b805482168a841617905560708054909116918816919091179055611afa6020860186614b27565b607380546001600160a01b0319166001600160a01b0392909216919091179055611b2a6060860160408701614b27565b606980546001600160a01b0392909216600160401b02600160401b600160e01b0319909216919091179055611b6560c0860160a08701614b27565b606a80546001600160a01b0319166001600160a01b039290921691909117905560008052606d6020527fda90043ba5b4096ba14704bc227ab0d3167da15b887e62ab2e76e37daa711356849055611bc260e0860160c08701614733565b607280546001600160401b0392909216600160c01b026001600160c01b03909216919091179055611bf96040860160208701614733565b606c80546001600160401b0392909216600160a81b0267ffffffffffffffff60a81b19909216919091179055611c356080860160608701614733565b607280546001600160401b0392909216600160801b0267ffffffffffffffff60801b19909216919091179055611c7160a0860160808701614c09565b606c8054911515600160a01b0260ff60a01b19909216919091179055606e611c99848261502a565b50606f611ca6838261502a565b50670de0b6b3a7640000607455606580546affffffffffffffffffff0019166a03ea000000000000070800179055611cdc613abb565b8015611d22576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050565b6073546001600160a01b03163314611d575760405162461bcd60e51b815260040161095b90614dca565b60698054600160401b600160e01b031916600160401b6001600160a01b038416021790556040517ff54144f9611984021529f814a1cb6a41e22c58351510a0d9f7e822618abb9cc090610a5090839061471f565b6073546001600160a01b03163314611dd55760405162461bcd60e51b815260040161095b90614dca565b607380546001600160a01b0319166001600160a01b0383161790556040517f5a272403b402d892977df56625f4164ccaf70ca3863991c43ecfe76a6905b0a190610a5090839061471f565b611e28613b2f565b611e326000613b89565b565b6033546001600160a01b03163314612033576000611e506123d7565b9050806001600160401b0316826001600160401b031611611ec75760405162461bcd60e51b815260206004820152603c602482015260008051602061540283398151915260448201527f746174653a20426174636820616c726561647920766572696669656400000000606482015260840161095b565b6068546001600160401b03600160401b909104811690831611801590611f0957506001600160401b038083166000908152606760205260409020600101541615155b611f825760405162461bcd60e51b8152602060048201526050602482015260008051602061540283398151915260448201527f746174653a204261746368206e6f742073657175656e636564206f72206e6f7460648201526f20656e64206f662073657175656e636560801b608482015260a40161095b565b6001600160401b038083166000908152606760205260409020600101544291611fb09162093a809116614e23565b6001600160401b031611156120315760405162461bcd60e51b815260206004820152604d602482015260008051602061540283398151915260448201527f746174653a204167677265676174696f6e2068616c742074696d656f7574206960648201526c1cc81b9bdd08195e1c1a5c9959609a1b608482015260a40161095b565b505b6119c2613bdb565b60655460ff161561205e5760405162461bcd60e51b815260040161095b90614e4e565b61206f898989898989898989613c4b565b6001600160401b0386166000908152606d60209081526040918290205482519081529081018690527f1f44c21118c4603cfb4e1b621dbcfa2b73efcececee2b99b620b2953d33a7010910160405180910390a1611d22613bdb565b6073546001600160a01b031633146120f45760405162461bcd60e51b815260040161095b90614dca565b606c8054821515600160a01b0260ff60a01b199091161790556040517fbacda50a4a8575be1d91a7ebe29ee45056f3a94f12a2281eb6b43afa33bcefe690610a5090831515815260200190565b6065546040516370a0823160e01b81526000918291600160581b9091046001600160a01b0316906370a082319061217c90309060040161471f565b602060405180830381865afa158015612199573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121bd9190614f15565b905060006121c96123d7565b6068546001600160401b03600160401b82048116916121f991600160801b8204811691600160c01b900416614f86565b6122039190614e23565b61220d9190614f86565b6001600160401b0316905061222281836150ff565b9250505090565b6073546001600160a01b031633146122535760405162461bcd60e51b815260040161095b90614dca565b62093a806001600160401b03821611156122e75760405162461bcd60e51b815260206004820152604960248201527f506f6c79676f6e5a6b45564d3a3a73657450656e64696e67537461746554696d60448201527f656f75743a20457863656564206d61782068616c74206167677265676174696f6064820152681b881d1a5b595bdd5d60ba1b608482015260a40161095b565b60655460ff1661237c576072546001600160401b03600160801b90910481169082161061237c5760405162461bcd60e51b815260206004820152603f60248201527f506f6c79676f6e5a6b45564d3a3a73657450656e64696e67537461746554696d60448201527f656f75743a204e65772074696d656f7574206d757374206265206c6f77657200606482015260840161095b565b6072805467ffffffffffffffff60801b1916600160801b6001600160401b038416908102919091179091556040519081527fc4121f4e22c69632ebb7cf1f462be0511dc034f999b52013eddfb24aab765c7590602001610a50565b6072546000906001600160401b03161561241457506072546001600160401b03908116600090815260716020526040902054600160401b90041690565b506069546001600160401b031690565b6073546001600160a01b0316331461244e5760405162461bcd60e51b815260040161095b90614dca565b606e61245a828261502a565b507f6b8f723a4c7a5335cafae8a598a0aa0301be1387c037dccc085b62add6448b2081604051610a509190614678565b6073546001600160a01b031633146124b45760405162461bcd60e51b815260040161095b90614dca565b6065805468ffffffffffffffff0019166101006001600160401b038416908102919091179091556040519081527f03a12f7e53d2a9e31a9e913d85c12c4c38feb92abe003c111329298af088437f90602001610a50565b60655460ff161561252e5760405162461bcd60e51b815260040161095b90614e4e565b606c54600160a01b900460ff16151560011461255c5760405162461bcd60e51b815260040161095b90615113565b8051806125bf5760405162461bcd60e51b815260206004820152603f602482015260008051602061546283398151915260448201527f65733a204d75737420666f726365206174206c65617374203120626174636800606482015260840161095b565b6103e881106126305760405162461bcd60e51b8152602060048201526043602482015260008051602061546283398151915260448201527f65733a2043616e6e6f74207665726966792074686174206d616e79206261746360648201526268657360e81b608482015260a40161095b565b6068546001600160401b03600160c01b8204811691612658918491600160801b90041661517c565b11156126b45760405162461bcd60e51b81526020600482015260376024820152600080516020615462833981519152604482015276195cce88119bdc98d94818985d18da081a5b9d985b1a59604a1b606482015260840161095b565b6068546001600160401b03600160401b820481166000818152606760205260408120549193600160801b9004909216915b848110156128e257600086828151811061270157612701614eb6565b60200260200101519050838061271690614ecc565b94505060008160000151805190602001208260200151836040015160405160200161274393929190614ef2565b60408051601f1981840301815291815281516020928301206001600160401b0388166000908152606690935291205490915081146127e25760405162461bcd60e51b8152602060048201526042602482015260008051602061546283398151915260448201527f65733a20466f7263656420626174636865732064617461206d757374206d61746064820152610c6d60f31b608482015260a40161095b565b6127ed600188614fae565b830361288457426206978083604001516128079190614e23565b6001600160401b031611156128845760405162461bcd60e51b8152602060048201526049602482015260008051602061546283398151915260448201527f65733a20466f72636564206261746368206973206e6f7420696e2074696d656f6064820152681d5d081c195c9a5bd960ba1b608482015260a40161095b565b81518051602091820120818401516040516128a793889392914291339101614f2e565b60405160208183030381529060405280519060200120935085806128ca90614ecc565b965050505080806128da90614f6d565b9150506126e5565b506068805467ffffffffffffffff1916426001600160401b03908116918217808455604080516060810182528681526020808201958652600160401b9384900485168284019081528a861660008181526067909352848320935184559651600193909301805491519387166001600160801b0319909216919091179286168502929092179091558554600160401b600160c01b03191694830267ffffffffffffffff60801b191694909417600160801b88851602179485905551930416917f648a61dd2438f072f5a1960939abd30f37aea80d2e94c9792ad142d3e0a490a49190a25050505050565b6073546001600160a01b031633146129f55760405162461bcd60e51b815260040161095b90614dca565b607060009054906101000a90046001600160a01b03166001600160a01b031663dbc169766040518163ffffffff1660e01b8152600401600060405180830381600087803b158015612a4557600080fd5b505af1158015612a59573d6000803e3d6000fd5b50505050611e32614281565b606a546001600160a01b03163314612a8f5760405162461bcd60e51b815260040161095b90615194565b612aa0898989898989898989613c4b565b6069805467ffffffffffffffff19166001600160401b038881169182179092556000908152606d602052604090208590556072541615612aeb57607280546001600160801b03191690555b606c546040516333d6247d60e01b8152600481018790526001600160a01b03909116906333d6247d90602401600060405180830381600087803b158015612b3157600080fd5b505af1158015612b45573d6000803e3d6000fd5b5050607280546001600160c01b031661127560c71b179055505060405184815233906001600160401b038816907fcc1b5520188bf1dd3e63f98164b577c4d75c11a619ddea692112f0d1aec4cf729060200160405180910390a3505050505050505050565b60655460ff1615612bcd5760405162461bcd60e51b815260040161095b90614e4e565b606c54600160a01b900460ff161515600114612bfb5760405162461bcd60e51b815260040161095b90615113565b6000612c0660745490565b905081811115612c6b5760405162461bcd60e51b815260206004820152602a60248201527f506f6c79676f6e5a6b45564d3a3a666f72636542617463683a204e6f7420656e6044820152696f756768206d6174696360b01b606482015260840161095b565b620493e0835110612cdc5760405162461bcd60e51b815260206004820152603560248201527f506f6c79676f6e5a6b45564d3a3a666f72636542617463683a205472616e73616044820152746374696f6e73206279746573206f766572666c6f7760581b606482015260840161095b565b606554612cfb90600160581b90046001600160a01b03163330846130de565b606c5460408051633ed691ef60e01b815290516000926001600160a01b031691633ed691ef9160048083019260209291908290030181865afa158015612d45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d699190614f15565b60688054919250600160c01b9091046001600160401b0316906018612d8d83614ecc565b91906101000a8154816001600160401b0302191690836001600160401b031602179055505083805190602001208142604051602001612dce93929190614ef2565b60408051808303601f190181529181528151602092830120606854600160c01b90046001600160401b031660009081526066909352912055323303612e7257606854604080518381523360208201526060918101829052600091810191909152600160c01b9091046001600160401b0316907ff94bb37db835f1ab585ee00041849a09b12cd081d77fa15ca070757619cbc9319060800160405180910390a2612ecd565b606860189054906101000a90046001600160401b03166001600160401b03167ff94bb37db835f1ab585ee00041849a09b12cd081d77fa15ca070757619cbc931823387604051612ec4939291906151f1565b60405180910390a25b50505050565b606a546001600160a01b03163314612efd5760405162461bcd60e51b815260040161095b90615194565b612f0d88888888888888886131ed565b6069805467ffffffffffffffff19166001600160401b038881169182179092556000908152606d602052604090208590556072541615612f5857607280546001600160801b03191690555b606c546040516333d6247d60e01b8152600481018790526001600160a01b03909116906333d6247d90602401600060405180830381600087803b158015612f9e57600080fd5b505af1158015612fb2573d6000803e3d6000fd5b50506040518681523392506001600160401b03891691507f0c0ce073a7d7b5850c04ccc4b20ee7d3179d5f57d0ac44399565792c0f72fce7906020016118fd565b6073546001600160a01b0316331461301d5760405162461bcd60e51b815260040161095b90614dca565b606a80546001600160a01b0319166001600160a01b0383161790556040517f61f8fec29495a3078e9271456f05fb0707fd4e41f7661865f80fc437d06681ca90610a5090839061471f565b613070613b2f565b6001600160a01b0381166130d55760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161095b565b6119c281613b89565b6040516001600160a01b0380851660248301528316604482015260648101829052612ecd9085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915261432e565b6072546001600160401b03600160401b8204811691161115611e325760725460009061318690600160401b90046001600160401b03166001614e23565b905061319181610bfc565b156119c2576072546000906002906131b39084906001600160401b0316614f86565b6131bd9190615224565b6131c79083614e23565b90506131d281610bfc565b156131e4576131e0816138d6565b5050565b6131e0826138d6565b6000806131f86123d7565b90506001600160401b038a161561335e576072546001600160401b03908116908b1611156132b05760405162461bcd60e51b815260206004820152605960248201527f506f6c79676f6e5a6b45564d3a3a5f766572696679426174636865733a20706560448201527f6e64696e6753746174654e756d206d757374206265206c657373206f7220657160648201527875616c207468616e206c61737450656e64696e67537461746560381b608482015260a40161095b565b6001600160401b03808b1660009081526071602052604090206002810154815490945090918b8116600160401b90920416146133585760405162461bcd60e51b815260206004820152604d602482015260008051602061542283398151915260448201527f69744e756d4261746368206d757374206d61746368207468652070656e64696e60648201526c0ce40e6e8c2e8ca40c4c2e8c6d609b1b608482015260a40161095b565b50613484565b6001600160401b0389166000908152606d60205260409020549150816133e85760405162461bcd60e51b815260206004820152604460248201819052600080516020615422833981519152908201527f69744e756d426174636820737461746520726f6f7420646f6573206e6f7420656064820152631e1a5cdd60e21b608482015260a40161095b565b806001600160401b0316896001600160401b031611156134845760405162461bcd60e51b815260206004820152605e602482015260008051602061542283398151915260448201527f69744e756d4261746368206d757374206265206c657373206f7220657175616c60648201527f207468616e2063757272656e744c617374566572696669656442617463680000608482015260a40161095b565b806001600160401b0316886001600160401b03161161352c5760405162461bcd60e51b815260206004820152605860248201527f506f6c79676f6e5a6b45564d3a3a5f766572696679426174636865733a20666960448201527f6e616c4e65774261746368206d75737420626520626967676572207468616e206064820152770c6eae4e4cadce898c2e6e8accae4d2ccd2cac884c2e8c6d60431b608482015260a40161095b565b600061353b8a8a8a868b610a5b565b905060007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001600283604051613570919061524a565b602060405180830381855afa15801561358d573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906135b09190614f15565b6135ba9190615266565b606b546040805160208101825283815290516343753b4d60e01b81529293506001600160a01b03909116916343753b4d916135fe918b918b918b919060040161527a565b602060405180830381865afa15801561361b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061363f91906152f4565b61369f5760405162461bcd60e51b815260206004820152602b60248201527f506f6c79676f6e5a6b45564d3a3a5f766572696679426174636865733a20496e60448201526a3b30b634b210383937b7b360a91b606482015260840161095b565b6136e2336136ad858d614f86565b6001600160401b03166136be612141565b6136c89190614fc5565b606554600160581b90046001600160a01b03169190614405565b505050505050505050505050565b60006136fa6123d7565b90508160008061370a8484614f86565b6001600160401b031690505b836001600160401b0316836001600160401b0316146137bc576001600160401b03808416600090815260676020526040902060655460018201549192610100909104811691613766911642614fae565b11156137a157600181015461378b90600160401b90046001600160401b031685614f86565b61379e906001600160401b03168461517c565b92505b60010154600160401b90046001600160401b03169250613716565b60006137c88383614fae565b9050828110156138425760006137de8285614fae565b9050600c81116137ee57806137f1565b600c5b90506137fe816003614fc5565b61380990600a6153f5565b606554613822908390600160481b900461ffff166153f5565b60745461382f9190614fc5565b61383991906150ff565b607455506138ce565b600061384e8483614fae565b9050600c811161385e5780613861565b600c5b90506000613870826003614fc5565b61387b90600a6153f5565b606554613894908490600160481b900461ffff166153f5565b6074546138a19190614fc5565b6138ab91906150ff565b9050806074546074546138be9190614fc5565b6138c891906150ff565b60745550505b505050505050565b6001600160401b0381161580159061390357506072546001600160401b03600160401b9091048116908216115b801561391e57506072546001600160401b0390811690821611155b6139905760405162461bcd60e51b815260206004820152603f60248201527f506f6c79676f6e5a6b45564d3a3a5f636f6e736f6c696461746550656e64696e60448201527f6753746174653a2070656e64696e6753746174654e756d20696e76616c696400606482015260840161095b565b6001600160401b038181166000818152607160209081526040808320805460698054600160401b9283900490981667ffffffffffffffff19909816881790556002820154878652606d90945293829020929092556072805467ffffffffffffffff60401b19169390940292909217909255606c54600183015491516333d6247d60e01b815260048101929092529192916001600160a01b0316906333d6247d90602401600060405180830381600087803b158015613a4d57600080fd5b505af1158015613a61573d6000803e3d6000fd5b50505050826001600160401b0316816001600160401b03167f328d3c6c0fd6f1be0515e422f2d87e59f25922cbc2233568515a0c4bc3f8510e8460020154604051613aae91815260200190565b60405180910390a3505050565b600054610100900460ff16613b265760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b606482015260840161095b565b611e3233613b89565b6033546001600160a01b03163314611e325760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161095b565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b607060009054906101000a90046001600160a01b03166001600160a01b0316632072f6c56040518163ffffffff1660e01b8152600401600060405180830381600087803b158015613c2b57600080fd5b505af1158015613c3f573d6000803e3d6000fd5b50505050611e32614435565b60006001600160401b038a1615613dbb576072546001600160401b03908116908b161115613d035760405162461bcd60e51b8152602060048201526065602482015260008051602061544283398151915260448201527f696e6753746174653a2070656e64696e6753746174654e756d206d757374206260648201527f65206c657373206f7220657175616c207468616e206c61737450656e64696e67608482015264537461746560d81b60a482015260c40161095b565b506001600160401b03808a1660009081526071602052604090206002810154815490928a8116600160401b9092041614613db55760405162461bcd60e51b8152602060048201526059602482015260008051602061544283398151915260448201527f696e6753746174653a20696e69744e756d4261746368206d757374206d6174636064820152780d040e8d0ca40e0cadcc8d2dcce40e6e8c2e8ca40c4c2e8c6d603b1b608482015260a40161095b565b50613ef4565b506001600160401b0387166000908152606d602052604090205480613e4f5760405162461bcd60e51b8152602060048201526050602482015260008051602061544283398151915260448201527f696e6753746174653a20696e69744e756d426174636820737461746520726f6f60648201526f1d08191bd95cc81b9bdd08195e1a5cdd60821b608482015260a40161095b565b6069546001600160401b039081169089161115613ef45760405162461bcd60e51b8152602060048201526063602482015260008051602061544283398151915260448201527f696e6753746174653a20696e69744e756d4261746368206d757374206265206c60648201527f657373206f7220657175616c207468616e206c617374566572696669656442616084820152620e8c6d60eb1b60a482015260c40161095b565b6072546001600160401b03908116908a1611801590613f245750896001600160401b0316896001600160401b0316115b8015613f4557506072546001600160401b03600160401b9091048116908a16115b613fb65760405162461bcd60e51b8152602060048201526048602482015260008051602061544283398151915260448201527f696e6753746174653a2066696e616c50656e64696e6753746174654e756d20696064820152671b98dbdc9c9958dd60c21b608482015260a40161095b565b6001600160401b03898116600090815260716020526040902054600160401b900481169088161461406f5760405162461bcd60e51b8152602060048201526063602482015260008051602061544283398151915260448201527f696e6753746174653a2066696e616c4e65774261746368206d7573742062652060648201527f657175616c207468616e2063757272656e744c617374566572696669656442616084820152620e8c6d60eb1b60a482015260c40161095b565b600061407e898989858a610a5b565b905060007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000016002836040516140b3919061524a565b602060405180830381855afa1580156140d0573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906140f39190614f15565b6140fd9190615266565b606b546040805160208101825283815290516343753b4d60e01b81529293506001600160a01b03909116916343753b4d91614141918a918a918a919060040161527a565b602060405180830381865afa15801561415e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061418291906152f4565b6141dc5760405162461bcd60e51b8152602060048201526037602482015260008051602061544283398151915260448201527634b733a9ba30ba329d1024b73b30b634b210383937b7b360491b606482015260840161095b565b6001600160401b038b166000908152607160205260409020600201548790036136e25760405162461bcd60e51b815260206004820152605b602482015260008051602061544283398151915260448201527f696e6753746174653a2053746f72656420726f6f74206d75737420626520646960648201527f66666572656e74207468616e206e657720737461746520726f6f740000000000608482015260a40161095b565b60655460ff166142f95760405162461bcd60e51b815260206004820152603b60248201527f456d657267656e63794d616e616765723a3a6966456d657267656e637953746160448201527f74653a206f6e6c7920696620656d657267656e63792073746174650000000000606482015260840161095b565b6065805460ff191690556040517f1e5e34eea33501aecf2ebec9fe0e884a40804275ea7fe10b2ba084c8374308b390600090a1565b6000614383826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166144909092919063ffffffff16565b80519091501561440057808060200190518101906143a191906152f4565b6144005760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840161095b565b505050565b6040516001600160a01b03831660248201526044810182905261440090849063a9059cbb60e01b90606401613112565b60655460ff16156144585760405162461bcd60e51b815260040161095b90614e4e565b6065805460ff191660011790556040517f2261efe5aef6fedc1fd1550b25facc9181745623049c7901287030b9ad1a549790600090a1565b606061449f84846000856144a7565b949350505050565b6060824710156145085760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b606482015260840161095b565b600080866001600160a01b03168587604051614524919061524a565b60006040518083038185875af1925050503d8060008114614561576040519150601f19603f3d011682016040523d82523d6000602084013e614566565b606091505b509150915061457787838387614582565b979650505050505050565b606083156145f15782516000036145ea576001600160a01b0385163b6145ea5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161095b565b508161449f565b61449f83838151156146065781518083602001fd5b8060405162461bcd60e51b815260040161095b9190614678565b60005b8381101561463b578181015183820152602001614623565b83811115612ecd5750506000910152565b60008151808452614664816020860160208601614620565b601f01601f19169290920160200192915050565b60208152600061468b602083018461464c565b9392505050565b6000602082840312156146a457600080fd5b813561ffff8116811461468b57600080fd5b80356001600160401b03811681146146cd57600080fd5b919050565b600080600080600060a086880312156146ea57600080fd5b6146f3866146b6565b9450614701602087016146b6565b94979496505050506040830135926060810135926080909101359150565b6001600160a01b0391909116815260200190565b60006020828403121561474557600080fd5b61468b826146b6565b634e487b7160e01b600052604160045260246000fd5b604051608081016001600160401b03811182821017156147865761478661474e565b60405290565b604051606081016001600160401b03811182821017156147865761478661474e565b604051601f8201601f191681016001600160401b03811182821017156147d6576147d661474e565b604052919050565b60006001600160401b038211156147f7576147f761474e565b5060051b60200190565b600082601f83011261481257600080fd5b81356001600160401b0381111561482b5761482b61474e565b61483e601f8201601f19166020016147ae565b81815284602083860101111561485357600080fd5b816020850160208301376000918101602001919091529392505050565b6000602080838503121561488357600080fd5b82356001600160401b038082111561489a57600080fd5b818501915085601f8301126148ae57600080fd5b81356148c16148bc826147de565b6147ae565b81815260059190911b830184019084810190888311156148e057600080fd5b8585015b83811015614979578035858111156148fc5760008081fd5b86016080818c03601f19018113156149145760008081fd5b61491c614764565b898301358881111561492e5760008081fd5b61493c8e8c83870101614801565b8252506040808401358b83015260606149568186016146b6565b828401526149658486016146b6565b9083015250855250509186019186016148e4565b5098975050505050505050565b806040810183101561499757600080fd5b92915050565b806080810183101561499757600080fd5b6000806000806000806000806101a0898b0312156149cb57600080fd5b6149d4896146b6565b97506149e260208a016146b6565b96506149f060408a016146b6565b95506060890135945060808901359350614a0d8a60a08b01614986565b9250614a1c8a60e08b0161499d565b9150614a2c8a6101608b01614986565b90509295985092959890939650565b6001600160a01b03811681146119c257600080fd5b600080600080600080600080888a036101c0811215614a6e57600080fd5b8935614a7981614a3b565b985060208a0135614a8981614a3b565b975060408a0135614a9981614a3b565b965060608a0135614aa981614a3b565b955060e0607f1982011215614abd57600080fd5b5060808901935061016089013592506101808901356001600160401b0380821115614ae757600080fd5b614af38c838d01614801565b93506101a08b0135915080821115614b0a57600080fd5b50614b178b828c01614801565b9150509295985092959890939650565b600060208284031215614b3957600080fd5b813561468b81614a3b565b60008060008060008060008060006101c08a8c031215614b6357600080fd5b614b6c8a6146b6565b9850614b7a60208b016146b6565b9750614b8860408b016146b6565b9650614b9660608b016146b6565b955060808a0135945060a08a01359350614bb38b60c08c01614986565b9250614bc38b6101008c0161499d565b9150614bd38b6101808c01614986565b90509295985092959850929598565b600060208284031215614bf457600080fd5b5035919050565b80151581146119c257600080fd5b600060208284031215614c1b57600080fd5b813561468b81614bfb565b600060208284031215614c3857600080fd5b81356001600160401b03811115614c4e57600080fd5b61449f84828501614801565b60006020808385031215614c6d57600080fd5b82356001600160401b0380821115614c8457600080fd5b818501915085601f830112614c9857600080fd5b8135614ca66148bc826147de565b81815260059190911b83018401908481019088831115614cc557600080fd5b8585015b8381101561497957803585811115614ce15760008081fd5b86016060818c03601f1901811315614cf95760008081fd5b614d0161478c565b8983013588811115614d135760008081fd5b614d218e8c83870101614801565b8252506040808401358b830152614d398385016146b6565b9082015285525050918601918601614cc9565b60008060408385031215614d5f57600080fd5b82356001600160401b03811115614d7557600080fd5b614d8185828601614801565b95602094909401359450505050565b600181811c90821680614da457607f821691505b602082108103614dc457634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526023908201527f506f6c79676f6e5a6b45564d3a3a6f6e6c7941646d696e3a204f6e6c7920616460408201526236b4b760e91b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b60006001600160401b03808316818516808303821115614e4557614e45614e0d565b01949350505050565b60208082526042908201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960408201527f53746174653a206f6e6c79206966206e6f7420656d657267656e637920737461606082015261746560f01b608082015260a00190565b634e487b7160e01b600052603260045260246000fd5b60006001600160401b03808316818103614ee857614ee8614e0d565b6001019392505050565b928352602083019190915260c01b6001600160c01b031916604082015260480190565b600060208284031215614f2757600080fd5b5051919050565b9485526020850193909352604084019190915260c01b6001600160c01b0319166060808401919091521b6001600160601b0319166068820152607c0190565b600060018201614f7f57614f7f614e0d565b5060010190565b60006001600160401b0383811690831681811015614fa657614fa6614e0d565b039392505050565b600082821015614fc057614fc0614e0d565b500390565b6000816000190483118215151615614fdf57614fdf614e0d565b500290565b601f82111561440057600081815260208120601f850160051c8101602086101561500b5750805b601f850160051c820191505b818110156138ce57828155600101615017565b81516001600160401b038111156150435761504361474e565b615057816150518454614d90565b84614fe4565b602080601f83116001811461508c57600084156150745750858301515b600019600386901b1c1916600185901b1785556138ce565b600085815260208120601f198616915b828110156150bb5788860151825594840194600190910190840161509c565b50858210156150d95787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601260045260246000fd5b60008261510e5761510e6150e9565b500490565b60208082526043908201527f506f6c79676f6e5a6b45564d3a3a6973466f7263654261746368416c6c6f776560408201527f643a204f6e6c7920696620666f72636520626174636820697320617661696c61606082015262626c6560e81b608082015260a00190565b6000821982111561518f5761518f614e0d565b500190565b6020808252603c908201527f506f6c79676f6e5a6b45564d3a3a6f6e6c79547275737465644167677265676160408201527f746f723a204f6e6c7920747275737465642061676772656761746f7200000000606082015260800190565b8381526001600160a01b038316602082015260606040820181905260009061521b9083018461464c565b95945050505050565b60006001600160401b038084168061523e5761523e6150e9565b92169190910492915050565b6000825161525c818460208701614620565b9190910192915050565b600082615275576152756150e9565b500690565b61012081016040808784376000838201818152879190815b60028110156152b257848483379084018281529284019290600101615292565b5050828760c0870137610100850181815286935091505b60018110156152e85782518252602092830192909101906001016152c9565b50505095945050505050565b60006020828403121561530657600080fd5b815161468b81614bfb565b600181815b8085111561534c57816000190482111561533257615332614e0d565b8085161561533f57918102915b93841c9390800290615316565b509250929050565b60008261536357506001614997565b8161537057506000614997565b81600181146153865760028114615390576153ac565b6001915050614997565b60ff8411156153a1576153a1614e0d565b50506001821b614997565b5060208310610133831016604e8410600b84101617156153cf575081810a614997565b6153d98383615311565b80600019048211156153ed576153ed614e0d565b029392505050565b600061468b838361535456fe506f6c79676f6e5a6b45564d3a3a6163746976617465456d657267656e637953506f6c79676f6e5a6b45564d3a3a5f766572696679426174636865733a20696e506f6c79676f6e5a6b45564d3a3a5f70726f766544697374696e637450656e64506f6c79676f6e5a6b45564d3a3a73657175656e6365466f7263654261746368506f6c79676f6e5a6b45564d3a3a73657175656e6365426174636865733a2046a264697066735822122062aa0abf6eb0b3c09830fead437d054af78f3ffc9b7c55711fa2a8d7f0eee28164736f6c634300080f0033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/compiled-contracts/PolygonZkEVMBridge.json b/compiled-contracts/PolygonZkEVMBridge.json index 04a4ef9..d94e35a 100644 --- a/compiled-contracts/PolygonZkEVMBridge.json +++ b/compiled-contracts/PolygonZkEVMBridge.json @@ -140,6 +140,12 @@ "internalType": "address", "name": "wrappedTokenAddress", "type": "address" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "metadata", + "type": "bytes" } ], "name": "NewWrappedToken", @@ -653,9 +659,9 @@ "type": "bytes32[]" }, { - "internalType": "uint64", + "internalType": "uint32", "name": "index", - "type": "uint64" + "type": "uint32" }, { "internalType": "bytes32", @@ -699,8 +705,8 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b506147ce806100206000396000f3fe608060405260043610620001675760003560e01c80637b6323c111620000c5578063d02103ca1162000078578063d02103ca146200047d578063d96a15f7146200049f578063dbc1697614620004b6578063ed6be5c914620004ce578063ee25560b14620004e5578063ff634ed7146200051657600080fd5b80637b6323c1146200037057806381b1c17414620003955780639e34070f14620003cf578063a08e8a0814620003f4578063aaa13cc2146200041e578063bab161bf146200044357600080fd5b806334ac9cf2116200011e57806334ac9cf214620002a25780633ae0504714620002c45780633da8168214620002dc5780633e1970431462000301578063463855491462000326578063647c576c146200034b57600080fd5b80630871e971146200016c57806315064c9614620001855780632072f6c514620001b657806322e95f2c14620001ce5780632dfdf0b5146200020c578063318aee3d1462000233575b600080fd5b620001836200017d36600462002432565b6200052d565b005b3480156200019257600080fd5b50602254620001a19060ff1681565b60405190151581526020015b60405180910390f35b348015620001c357600080fd5b5062000183620009cf565b348015620001db57600080fd5b50620001f3620001ed366004620024be565b62000a08565b6040516001600160a01b039091168152602001620001ad565b3480156200021957600080fd5b506200022460215481565b604051908152602001620001ad565b3480156200024057600080fd5b506200027d62000252366004620024fa565b60256020526000908152604090205463ffffffff81169064010000000090046001600160a01b031682565b6040805163ffffffff90931683526001600160a01b03909116602083015201620001ad565b348015620002af57600080fd5b50602754620001f3906001600160a01b031681565b348015620002d157600080fd5b506200022462000a5b565b348015620002e957600080fd5b50620001a1620002fb366004620025e7565b62000b4e565b3480156200030e57600080fd5b50620002246200032036600462002664565b62000c4f565b3480156200033357600080fd5b50620001836200034536600462002774565b62000cdc565b3480156200035857600080fd5b50620001836200036a3660046200285a565b62000e82565b3480156200037d57600080fd5b50620001836200038f36600462002774565b62000fe1565b348015620003a257600080fd5b50620001f3620003b4366004620028aa565b6024602052600090815260409020546001600160a01b031681565b348015620003dc57600080fd5b50620001a1620003ee366004620028aa565b62001469565b3480156200040157600080fd5b506200040b600081565b60405160ff9091168152602001620001ad565b3480156200042b57600080fd5b50620001f36200043d366004620028c4565b620014ae565b3480156200045057600080fd5b506022546200046790610100900463ffffffff1681565b60405163ffffffff9091168152602001620001ad565b3480156200048a57600080fd5b50602654620001f3906001600160a01b031681565b62000183620004b036600462002977565b620015c5565b348015620004c357600080fd5b506200018362001771565b348015620004db57600080fd5b5062000467600081565b348015620004f257600080fd5b506200022462000504366004620028aa565b60236020526000908152604090205481565b3480156200052357600080fd5b506200040b600181565b60225460ff16156200055c5760405162461bcd60e51b81526004016200055390620029de565b60405180910390fd5b60225463ffffffff610100909104811690861603620005e45760405162461bcd60e51b815260206004820152603d60248201527f506f6c79676f6e5a6b45564d4272696467653a3a62726964676541737365743a60448201527f2044657374696e6174696f6e2063616e6e6f7420626520697473656c66000000606482015260840162000553565b60008060606001600160a01b03891662000687578534146200067d5760405162461bcd60e51b8152602060048201526044602482018190527f506f6c79676f6e5a6b45564d4272696467653a3a62726964676541737365743a908201527f20416d6f756e7420646f6573206e6f74206d61746368206d6573736167652e76606482015263616c756560e01b608482015260a40162000553565b60009150620008e9565b6001600160a01b03808a1660009081526025602090815260409182902082518084019093525463ffffffff81168352640100000000900490921691810182905290156200074657604051632770a7eb60e21b81526001600160a01b038b1690639dc29fac90620006fe9033908b9060040162002a46565b600060405180830381600087803b1580156200071957600080fd5b505af11580156200072e573d6000803e3d6000fd5b505050508060200151935080600001519250620008e7565b84156200075b576200075b8a888888620017a8565b620007726001600160a01b038b1633308a62001bcc565b899350602260019054906101000a900463ffffffff169250896001600160a01b03166306fdde036040518163ffffffff1660e01b8152600401600060405180830381865afa158015620007c9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620007f3919081019062002ada565b8a6001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa15801562000832573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200085c919081019062002ada565b8b6001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200089b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620008c1919062002b12565b604051602001620008d59392919062002b60565b60405160208183030381529060405291505b505b7f501781209a1f8899323b96b4ef08b168df93e0a90c673d1e4cce39366cb62f9b600083858b8b8b876021546040516200092b98979695949392919062002b9d565b60405180910390a16200095662000950600084868c8c8c888051906020012062000c4f565b62001c39565b6026546001600160a01b03166333d6247d6200097162000a5b565b6040518263ffffffff1660e01b81526004016200099091815260200190565b600060405180830381600087803b158015620009ab57600080fd5b505af1158015620009c0573d6000803e3d6000fd5b50505050505050505050505050565b6027546001600160a01b03163314620009fc5760405162461bcd60e51b8152600401620005539062002c0a565b62000a0662001d8a565b565b600060246000848460405160200162000a2392919062002c67565b60408051601f19818403018152918152815160209283012083529082019290925201600020546001600160a01b031690505b92915050565b602154600090819081805b602081101562000b45578260011660010362000ac6576001816020811062000a925762000a9262002c91565b0154604080516020810192909252810185905260600160405160208183030381529060405280519060200120935062000af3565b60408051602081018690529081018390526060016040516020818303038152906040528051906020012093505b62000b0060028462002cd3565b6040805160208101859052908101849052909350606001604051602081830303815290604052805190602001209150808062000b3c9062002cea565b91505062000a66565b50919392505050565b6000846001600160401b038416825b602081101562000c40578160011660010362000bca5786818151811062000b885762000b8862002c91565b60200260200101518360405160200162000bac929190918252602082015260400190565b60405160208183030381529060405280519060200120925062000c1c565b8287828151811062000be05762000be062002c91565b602002602001015160405160200162000c03929190918252602082015260400190565b6040516020818303038152906040528051906020012092505b62000c2960028362002cd3565b91508062000c378162002cea565b91505062000b5d565b5050821490505b949350505050565b6040516001600160f81b031960f889901b1660208201526001600160e01b031960e088811b821660218401526001600160601b0319606089811b821660258601529188901b909216603984015285901b16603d8201526051810183905260718101829052600090609101604051602081830303815290604052805190602001209050979650505050505050565b60225460ff161562000d025760405162461bcd60e51b81526004016200055390620029de565b62000d188a8a8a8a8a8a8a8a8a8a600162001de8565b62000d298963ffffffff1662002073565b6000836001600160a01b03168387898560405160240162000d4d9392919062002d06565b60408051601f198184030181529181526020820180516001600160e01b0316630c035af960e11b1790525162000d84919062002d41565b60006040518083038185875af1925050503d806000811462000dc3576040519150601f19603f3d011682016040523d82523d6000602084013e62000dc8565b606091505b505090508062000e345760405162461bcd60e51b815260206004820152603060248201527f506f6c79676f6e5a6b45564d4272696467653a3a636c61696d4d65737361676560448201526f0e8813595cdcd859d94819985a5b195960821b606482015260840162000553565b7f25308c93ceeed162da955b3f7ce3e3f93606579e40fb92029faa9efe275459838a8888878760405162000e6d95949392919062002d5f565b60405180910390a15050505050505050505050565b600054610100900460ff161580801562000ea35750600054600160ff909116105b8062000ebf5750303b15801562000ebf575060005460ff166001145b62000f245760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840162000553565b6000805460ff19166001179055801562000f48576000805461ff0019166101001790555b6022805463ffffffff86166101000264ffffffff0019909116179055602680546001600160a01b038086166001600160a01b0319928316179092556027805492851692909116919091179055801562000fdb576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b60225460ff1615620010075760405162461bcd60e51b81526004016200055390620029de565b6200101d8a8a8a8a8a8a8a8a8a8a600062001de8565b6200102e8963ffffffff1662002073565b6001600160a01b0385166200112557604080516000808252602082019092526001600160a01b03851690849060405162001069919062002d41565b60006040518083038185875af1925050503d8060008114620010a8576040519150601f19603f3d011682016040523d82523d6000602084013e620010ad565b606091505b50509050806200111e5760405162461bcd60e51b815260206004820152603560248201527f506f6c79676f6e5a6b45564d4272696467653a3a636c61696d41737365743a20604482015274115d1a195c881d1c985b9cd9995c8819985a5b1959605a1b606482015260840162000553565b506200141c565b60225463ffffffff6101009091048116908716036200115a57620011546001600160a01b0386168484620020b5565b6200141c565b600086866040516020016200117192919062002c67565b60408051601f198184030181529181528151602092830120600081815260249093529120549091506001600160a01b031680620013b457600080600085806020019051810190620011c3919062002d96565b925092509250600085848484604051620011dd9062002399565b620011eb9392919062002b60565b8190604051809103906000f59050801580156200120c573d6000803e3d6000fd5b506040516340c10f1960e01b81529091506001600160a01b038216906340c10f199062001240908c908c9060040162002a46565b600060405180830381600087803b1580156200125b57600080fd5b505af115801562001270573d6000803e3d6000fd5b50505050806024600088815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060405180604001604052808d63ffffffff1681526020018c6001600160a01b031681525060256000836001600160a01b03166001600160a01b0316815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a8154816001600160a01b0302191690836001600160a01b031602179055509050507fccd7715648d1f2bb13e158f96b5b6c3aeda555d4cb87112e274a6f28bc571d598c8c83604051620013a29392919063ffffffff9390931683526001600160a01b03918216602084015216604082015260600190565b60405180910390a15050505062001419565b6040516340c10f1960e01b81526001600160a01b038216906340c10f1990620013e4908890889060040162002a46565b600060405180830381600087803b158015620013ff57600080fd5b505af115801562001414573d6000803e3d6000fd5b505050505b50505b7f25308c93ceeed162da955b3f7ce3e3f93606579e40fb92029faa9efe2754598389878786866040516200145595949392919062002d5f565b60405180910390a150505050505050505050565b6000806200147a6101008462002cd3565b905060006200148c6101008562002e0b565b60009283526023602052604090922054600190921b9182169091149392505050565b6000808888604051602001620014c692919062002c67565b604051602081830303815290604052805190602001209050600060ff60f81b308360405180602001620014f99062002399565b601f1982820381018352601f90910116604081905262001526908d908d908d908d908d9060200162002e4b565b60408051601f198184030181529082905262001546929160200162002e8c565b604051602081830303815290604052805190602001206040516020016200159f94939291906001600160f81b031994909416845260609290921b6001600160601b03191660018401526015830152603582015260550190565b60408051808303601f1901815291905280516020909101209a9950505050505050505050565b60225460ff1615620015eb5760405162461bcd60e51b81526004016200055390620029de565b60225463ffffffff610100909104811690841603620016735760405162461bcd60e51b815260206004820152603f60248201527f506f6c79676f6e5a6b45564d4272696467653a3a6272696467654d657373616760448201527f653a2044657374696e6174696f6e2063616e6e6f7420626520697473656c6600606482015260840162000553565b7f501781209a1f8899323b96b4ef08b168df93e0a90c673d1e4cce39366cb62f9b6001602260019054906101000a900463ffffffff163386863487602154604051620016c798979695949392919062002b9d565b60405180910390a1620016fe620009506001602260019054906101000a900463ffffffff1633878734888051906020012062000c4f565b6026546001600160a01b03166333d6247d6200171962000a5b565b6040518263ffffffff1660e01b81526004016200173891815260200190565b600060405180830381600087803b1580156200175357600080fd5b505af115801562001768573d6000803e3d6000fd5b50505050505050565b6027546001600160a01b031633146200179e5760405162461bcd60e51b8152600401620005539062002c0a565b62000a06620020d7565b6000620017eb83838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506200218692505050565b9050632afa533160e01b6001600160e01b0319821601620019e05760008080808080806200181d896004818d62002ebf565b8101906200182c919062002eeb565b9650965096509650965096509650336001600160a01b0316876001600160a01b0316146200186e5760405162461bcd60e51b8152600401620005539062002f46565b6001600160a01b0386163014620018995760405162461bcd60e51b8152600401620005539062002fa3565b8a85146200190c5760405162461bcd60e51b815260206004820152603960248201527f506f6c79676f6e5a6b45564d4272696467653a3a5f7065726d69743a205065726044820152780dad2e840c2dadeeadce840c8decae640dcdee840dac2e8c6d603b1b606482015260840162000553565b604080516001600160a01b0389811660248301528881166044830152606482018890526084820187905260ff861660a483015260c4820185905260e48083018590528351808403909101815261010490920183526020820180516001600160e01b031663d505accf60e01b1790529151918e16916200198c919062002d41565b6000604051808303816000865af19150503d8060008114620019cb576040519150601f19603f3d011682016040523d82523d6000602084013e620019d0565b606091505b5050505050505050505062001bc5565b6001600160e01b031981166323f2ebc360e21b1462001a565760405162461bcd60e51b815260206004820152602b60248201527f506f6c79676f6e5a6b45564d4272696467653a3a5f7065726d69743a204e6f7460448201526a081d985b1a590818d85b1b60aa1b606482015260840162000553565b60008080808080808062001a6e8a6004818e62002ebf565b81019062001a7d919062003005565b97509750975097509750975097509750336001600160a01b0316886001600160a01b03161462001ac15760405162461bcd60e51b8152600401620005539062002f46565b6001600160a01b038716301462001aec5760405162461bcd60e51b8152600401620005539062002fa3565b604080516001600160a01b038a811660248301528981166044830152606482018990526084820188905286151560a483015260ff861660c483015260e482018590526101048083018590528351808403909101815261012490920183526020820180516001600160e01b03166323f2ebc360e21b1790529151918f169162001b75919062002d41565b6000604051808303816000865af19150503d806000811462001bb4576040519150601f19603f3d011682016040523d82523d6000602084013e62001bb9565b606091505b50505050505050505050505b5050505050565b6040516001600160a01b038085166024830152831660448201526064810182905262000fdb9085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526200218d565b80600162001c4a602060026200318e565b62001c5691906200319c565b6021541062001cbb5760405162461bcd60e51b815260206004820152602a60248201527f4465706f736974436f6e74726163743a5f6465706f7369743a204d65726b6c65604482015269081d1c995948199d5b1b60b21b606482015260840162000553565b60016021600082825462001cd09190620031b6565b909155505060215460005b602081101562001d7a578160011660010362001d1057826001826020811062001d085762001d0862002c91565b015550505050565b6001816020811062001d265762001d2662002c91565b0154604080516020810192909252810184905260600160405160208183030381529060405280519060200120925060028262001d63919062002cd3565b91508062001d718162002cea565b91505062001cdb565b5062001d85620031d1565b505050565b60225460ff161562001db05760405162461bcd60e51b81526004016200055390620029de565b6022805460ff191660011790556040517f2261efe5aef6fedc1fd1550b25facc9181745623049c7901287030b9ad1a549790600090a1565b62001df98a63ffffffff1662001469565b1562001e505760405162461bcd60e51b815260206004820152603060248201526000805160206200477983398151915260448201526f08105b1c9958591e4818db185a5b595960821b606482015260840162000553565b6026546040805160208082018d90528183018c9052825180830384018152606083019384905280519101206312bd9b1960e11b90925260648101919091526000916001600160a01b03169063257b3632906084016020604051808303816000875af115801562001ec4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001eea9190620031e7565b90508060000362001f4d5760405162461bcd60e51b81526020600482015260376024820152600080516020620047798339815191526044820152760811db1bd8985b115e1a5d149bdbdd081a5b9d985b1a59604a1b606482015260840162000553565b60225463ffffffff878116610100909204161462001fcf5760405162461bcd60e51b815260206004820152604360248201526000805160206200477983398151915260448201527f2044657374696e6174696f6e206e6574776f726b20646f6573206e6f74206d616064820152620e8c6d60eb1b608482015260a40162000553565b602254600090610100900463ffffffff1662001fed57508862001ff0565b50895b6200201b6200200c848b8b8b8b8b8b8051906020012062000c4f565b8e8e63ffffffff168462000b4e565b620009c05760405162461bcd60e51b81526020600482015260326024820152600080516020620047798339815191526044820152711024b73b30b634b21039b6ba10383937b7b360711b606482015260840162000553565b6000620020836101008362002cd3565b90506000620020956101008462002e0b565b6000928352602360205260409092208054600190931b9092179091555050565b62001d858363a9059cbb60e01b848460405160240162001c0192919062002a46565b60225460ff16620021515760405162461bcd60e51b815260206004820152603b60248201527f456d657267656e63794d616e616765723a3a6966456d657267656e637953746160448201527f74653a206f6e6c7920696620656d657267656e63792073746174650000000000606482015260840162000553565b6022805460ff191690556040517f1e5e34eea33501aecf2ebec9fe0e884a40804275ea7fe10b2ba084c8374308b390600090a1565b6020015190565b6000620021e4826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316620022669092919063ffffffff16565b80519091501562001d85578080602001905181019062002205919062003201565b62001d855760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840162000553565b606062000c47848460008585600080866001600160a01b0316858760405162002290919062002d41565b60006040518083038185875af1925050503d8060008114620022cf576040519150601f19603f3d011682016040523d82523d6000602084013e620022d4565b606091505b5091509150620022e787838387620022f2565b979650505050505050565b60608315620023665782516000036200235e576001600160a01b0385163b6200235e5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640162000553565b508162000c47565b62000c4783838151156200237d5781518083602001fd5b8060405162461bcd60e51b815260040162000553919062003221565b611542806200323783390190565b6001600160a01b0381168114620023bd57600080fd5b50565b8035620023cd81620023a7565b919050565b803563ffffffff81168114620023cd57600080fd5b60008083601f840112620023fa57600080fd5b5081356001600160401b038111156200241257600080fd5b6020830191508360208285010111156200242b57600080fd5b9250929050565b60008060008060008060a087890312156200244c57600080fd5b86356200245981620023a7565b95506200246960208801620023d2565b945060408701356200247b81620023a7565b93506060870135925060808701356001600160401b038111156200249e57600080fd5b620024ac89828a01620023e7565b979a9699509497509295939492505050565b60008060408385031215620024d257600080fd5b620024dd83620023d2565b91506020830135620024ef81620023a7565b809150509250929050565b6000602082840312156200250d57600080fd5b81356200251a81620023a7565b9392505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171562002562576200256262002521565b604052919050565b600082601f8301126200257c57600080fd5b813560206001600160401b038211156200259a576200259a62002521565b8160051b620025ab82820162002537565b9283528481018201928281019087851115620025c657600080fd5b83870192505b84831015620022e757823582529183019190830190620025cc565b60008060008060808587031215620025fe57600080fd5b8435935060208501356001600160401b03808211156200261d57600080fd5b6200262b888389016200256a565b94506040870135915080821682146200264357600080fd5b509396929550929360600135925050565b60ff81168114620023bd57600080fd5b600080600080600080600060e0888a0312156200268057600080fd5b87356200268d8162002654565b96506200269d60208901620023d2565b95506040880135620026af81620023a7565b9450620026bf60608901620023d2565b93506080880135620026d181620023a7565b9699959850939692959460a0840135945060c09093013592915050565b60006001600160401b038211156200270a576200270a62002521565b50601f01601f191660200190565b600082601f8301126200272a57600080fd5b8135620027416200273b82620026ee565b62002537565b8181528460208386010111156200275757600080fd5b816020850160208301376000918101602001919091529392505050565b6000806000806000806000806000806101408b8d0312156200279557600080fd5b8a356001600160401b0380821115620027ad57600080fd5b620027bb8e838f016200256a565b9b50620027cb60208e01620023d2565b9a5060408d0135995060608d01359850620027e960808e01620023d2565b9750620027f960a08e01620023c0565b96506200280960c08e01620023d2565b95506200281960e08e01620023c0565b94506101008d013593506101208d01359150808211156200283957600080fd5b50620028488d828e0162002718565b9150509295989b9194979a5092959850565b6000806000606084860312156200287057600080fd5b6200287b84620023d2565b925060208401356200288d81620023a7565b915060408401356200289f81620023a7565b809150509250925092565b600060208284031215620028bd57600080fd5b5035919050565b600080600080600080600060a0888a031215620028e057600080fd5b620028eb88620023d2565b96506020880135620028fd81620023a7565b955060408801356001600160401b03808211156200291a57600080fd5b620029288b838c01620023e7565b909750955060608a01359150808211156200294257600080fd5b50620029518a828b01620023e7565b9094509250506080880135620029678162002654565b8091505092959891949750929550565b6000806000606084860312156200298d57600080fd5b6200299884620023d2565b92506020840135620029aa81620023a7565b915060408401356001600160401b03811115620029c657600080fd5b620029d48682870162002718565b9150509250925092565b60208082526042908201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960408201527f53746174653a206f6e6c79206966206e6f7420656d657267656e637920737461606082015261746560f01b608082015260a00190565b6001600160a01b03929092168252602082015260400190565b60005b8381101562002a7c57818101518382015260200162002a62565b8381111562000fdb5750506000910152565b600082601f83011262002aa057600080fd5b815162002ab16200273b82620026ee565b81815284602083860101111562002ac757600080fd5b62000c4782602083016020870162002a5f565b60006020828403121562002aed57600080fd5b81516001600160401b0381111562002b0457600080fd5b62000c478482850162002a8e565b60006020828403121562002b2557600080fd5b81516200251a8162002654565b6000815180845262002b4c81602086016020860162002a5f565b601f01601f19169290920160200192915050565b60608152600062002b75606083018662002b32565b828103602084015262002b89818662002b32565b91505060ff83166040830152949350505050565b60ff8916815263ffffffff88811660208301526001600160a01b03888116604084015287821660608401528616608083015260a0820185905261010060c0830181905260009162002bf18483018762002b32565b925080851660e085015250509998505050505050505050565b6020808252603a908201527f506f6c79676f6e5a6b45564d3a3a6f6e6c79506f6c79676f6e5a6b45564d3a2060408201527f6f6e6c7920506f6c79676f6e5a6b45564d20636f6e7472616374000000000000606082015260800190565b60e09290921b6001600160e01b031916825260601b6001600160601b031916600482015260180190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60008262002ce55762002ce562002ca7565b500490565b60006001820162002cff5762002cff62002cbd565b5060010190565b6001600160a01b038416815263ffffffff8316602082015260606040820181905260009062002d389083018462002b32565b95945050505050565b6000825162002d5581846020870162002a5f565b9190910192915050565b63ffffffff95861681529390941660208401526001600160a01b039182166040840152166060820152608081019190915260a00190565b60008060006060848603121562002dac57600080fd5b83516001600160401b038082111562002dc457600080fd5b62002dd28783880162002a8e565b9450602086015191508082111562002de957600080fd5b5062002df88682870162002a8e565b92505060408401516200289f8162002654565b60008262002e1d5762002e1d62002ca7565b500690565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60608152600062002e6160608301878962002e22565b828103602084015262002e7681868862002e22565b91505060ff831660408301529695505050505050565b6000835162002ea081846020880162002a5f565b83519083019062002eb681836020880162002a5f565b01949350505050565b6000808585111562002ed057600080fd5b8386111562002ede57600080fd5b5050820193919092039150565b600080600080600080600060e0888a03121562002f0757600080fd5b873562002f1481620023a7565b9650602088013562002f2681620023a7565b955060408801359450606088013593506080880135620026d18162002654565b6020808252603c908201527f506f6c79676f6e5a6b45564d4272696467653a3a5f7065726d69743a2050657260408201527f6d6974206f776e6572206d757374206265207468652073656e64657200000000606082015260800190565b60208082526033908201527f506f6c79676f6e5a6b45564d4272696467653a3a5f7065726d69743a205370656040820152726e646572206d7573742062652027746869732760681b606082015260800190565b8015158114620023bd57600080fd5b600080600080600080600080610100898b0312156200302357600080fd5b88356200303081620023a7565b975060208901356200304281620023a7565b965060408901359550606089013594506080890135620030628162002ff6565b935060a0890135620030748162002654565b979a969950949793969295929450505060c08201359160e0013590565b600181815b80851115620030d2578160001904821115620030b657620030b662002cbd565b80851615620030c457918102915b93841c939080029062003096565b509250929050565b600082620030eb5750600162000a55565b81620030fa5750600062000a55565b81600181146200311357600281146200311e576200313e565b600191505062000a55565b60ff84111562003132576200313262002cbd565b50506001821b62000a55565b5060208310610133831016604e8410600b841016171562003163575081810a62000a55565b6200316f838362003091565b806000190482111562003186576200318662002cbd565b029392505050565b60006200251a8383620030da565b600082821015620031b157620031b162002cbd565b500390565b60008219821115620031cc57620031cc62002cbd565b500190565b634e487b7160e01b600052600160045260246000fd5b600060208284031215620031fa57600080fd5b5051919050565b6000602082840312156200321457600080fd5b81516200251a8162002ff6565b6020815260006200251a602083018462002b3256fe60c06040523480156200001157600080fd5b5060405162001542380380620015428339810160408190526200003491620002ad565b82826003620000448382620003c1565b506004620000538282620003c1565b5050600580546001600160a81b0319163360ff60a01b191617600160a01b60ff851602179055504660808190526200008b9062000098565b60a052506200048d915050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f620000c562000146565b805160209182012060408051808201825260018152603160f81b90840152805192830193909352918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060820152608081018390523060a082015260c001604051602081830303815290604052805190602001209050919050565b606060038054620001579062000332565b80601f0160208091040260200160405190810160405280929190818152602001828054620001859062000332565b8015620001d65780601f10620001aa57610100808354040283529160200191620001d6565b820191906000526020600020905b815481529060010190602001808311620001b857829003601f168201915b5050505050905090565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200020857600080fd5b81516001600160401b0380821115620002255762000225620001e0565b604051601f8301601f19908116603f01168101908282118183101715620002505762000250620001e0565b816040528381526020925086838588010111156200026d57600080fd5b600091505b8382101562000291578582018301518183018401529082019062000272565b83821115620002a35760008385830101525b9695505050505050565b600080600060608486031215620002c357600080fd5b83516001600160401b0380821115620002db57600080fd5b620002e987838801620001f6565b945060208601519150808211156200030057600080fd5b506200030f86828701620001f6565b925050604084015160ff811681146200032757600080fd5b809150509250925092565b600181811c908216806200034757607f821691505b6020821081036200036857634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620003bc57600081815260208120601f850160051c81016020861015620003975750805b601f850160051c820191505b81811015620003b857828155600101620003a3565b5050505b505050565b81516001600160401b03811115620003dd57620003dd620001e0565b620003f581620003ee845462000332565b846200036e565b602080601f8311600181146200042d5760008415620004145750858301515b600019600386901b1c1916600185901b178555620003b8565b600085815260208120601f198616915b828110156200045e578886015182559484019460019091019084016200043d565b50858210156200047d5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60805160a051611088620004ba60003960006104690152600081816102f9015261043301526110886000f3fe608060405234801561001057600080fd5b50600436106101375760003560e01c806370a08231116100b8578063a457c2d71161007c578063a457c2d7146102ce578063a9059cbb146102e1578063cd0d0096146102f4578063d505accf1461031b578063dd62ed3e1461032e578063ffa1ad741461034157600080fd5b806370a082311461023f5780637ecebe001461026857806395d89b41146102885780639dc29fac14610290578063a3c573eb146102a357600080fd5b806330adf81f116100ff57806330adf81f146101c9578063313ce567146101f05780633644e5151461020f578063395093511461021757806340c10f191461022a57600080fd5b806306fdde031461013c578063095ea7b31461015a57806318160ddd1461017d57806320606b701461018f57806323b872dd146101b6575b600080fd5b610144610361565b6040516101519190610dc2565b60405180910390f35b61016d610168366004610e33565b6103f3565b6040519015158152602001610151565b6002545b604051908152602001610151565b6101817f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81565b61016d6101c4366004610e5d565b61040b565b6101817f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b600554600160a01b900460ff1660405160ff9091168152602001610151565b61018161042f565b61016d610225366004610e33565b61048b565b61023d610238366004610e33565b6104ad565b005b61018161024d366004610e99565b6001600160a01b031660009081526020819052604090205490565b610181610276366004610e99565b60066020526000908152604090205481565b6101446104ee565b61023d61029e366004610e33565b6104fd565b6005546102b6906001600160a01b031681565b6040516001600160a01b039091168152602001610151565b61016d6102dc366004610e33565b610531565b61016d6102ef366004610e33565b6105ac565b6101817f000000000000000000000000000000000000000000000000000000000000000081565b61023d610329366004610ebb565b6105ba565b61018161033c366004610f2e565b6107f5565b610144604051806040016040528060018152602001603160f81b81525081565b60606003805461037090610f61565b80601f016020809104026020016040519081016040528092919081815260200182805461039c90610f61565b80156103e95780601f106103be576101008083540402835291602001916103e9565b820191906000526020600020905b8154815290600101906020018083116103cc57829003601f168201915b5050505050905090565b600033610401818585610820565b5060019392505050565b600033610419858285610945565b6104248585856109bf565b506001949350505050565b60007f000000000000000000000000000000000000000000000000000000000000000046146104665761046146610b51565b905090565b507f000000000000000000000000000000000000000000000000000000000000000090565b60003361040181858561049e83836107f5565b6104a89190610fb1565b610820565b6005546001600160a01b031633146104e05760405162461bcd60e51b81526004016104d790610fc9565b60405180910390fd5b6104ea8282610bfd565b5050565b60606004805461037090610f61565b6005546001600160a01b031633146105275760405162461bcd60e51b81526004016104d790610fc9565b6104ea8282610caa565b6000338161053f82866107f5565b90508381101561059f5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016104d7565b6104248286868403610820565b6000336104018185856109bf565b834211156106165760405162461bcd60e51b8152602060048201526024808201527f546f6b656e577261707065643a3a7065726d69743a20457870697265642070656044820152631c9b5a5d60e21b60648201526084016104d7565b6001600160a01b038716600090815260066020526040812080547f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918a918a918a91908661066383611019565b909155506040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e00160405160208183030381529060405280519060200120905060006106c161042f565b60405161190160f01b602082015260228101919091526042810183905260620160408051601f198184030181528282528051602091820120600080855291840180845281905260ff89169284019290925260608301879052608083018690529092509060019060a0016020604051602081039080840390855afa15801561074c573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116158015906107825750896001600160a01b0316816001600160a01b0316145b6107de5760405162461bcd60e51b815260206004820152602760248201527f546f6b656e577261707065643a3a7065726d69743a20496e76616c6964207369604482015266676e617475726560c81b60648201526084016104d7565b6107e98a8a8a610820565b50505050505050505050565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166108825760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016104d7565b6001600160a01b0382166108e35760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016104d7565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b600061095184846107f5565b905060001981146109b957818110156109ac5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016104d7565b6109b98484848403610820565b50505050565b6001600160a01b038316610a235760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016104d7565b6001600160a01b038216610a855760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016104d7565b6001600160a01b03831660009081526020819052604090205481811015610afd5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016104d7565b6001600160a01b0384811660008181526020818152604080832087870390559387168083529184902080548701905592518581529092600080516020611033833981519152910160405180910390a36109b9565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f610b7c610361565b805160209182012060408051808201825260018152603160f81b90840152805192830193909352918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060820152608081018390523060a082015260c001604051602081830303815290604052805190602001209050919050565b6001600160a01b038216610c535760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016104d7565b8060026000828254610c659190610fb1565b90915550506001600160a01b03821660008181526020818152604080832080548601905551848152600080516020611033833981519152910160405180910390a35050565b6001600160a01b038216610d0a5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016104d7565b6001600160a01b03821660009081526020819052604090205481811015610d7e5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016104d7565b6001600160a01b0383166000818152602081815260408083208686039055600280548790039055518581529192916000805160206110338339815191529101610938565b600060208083528351808285015260005b81811015610def57858101830151858201604001528201610dd3565b81811115610e01576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b0381168114610e2e57600080fd5b919050565b60008060408385031215610e4657600080fd5b610e4f83610e17565b946020939093013593505050565b600080600060608486031215610e7257600080fd5b610e7b84610e17565b9250610e8960208501610e17565b9150604084013590509250925092565b600060208284031215610eab57600080fd5b610eb482610e17565b9392505050565b600080600080600080600060e0888a031215610ed657600080fd5b610edf88610e17565b9650610eed60208901610e17565b95506040880135945060608801359350608088013560ff81168114610f1157600080fd5b9699959850939692959460a0840135945060c09093013592915050565b60008060408385031215610f4157600080fd5b610f4a83610e17565b9150610f5860208401610e17565b90509250929050565b600181811c90821680610f7557607f821691505b602082108103610f9557634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60008219821115610fc457610fc4610f9b565b500190565b60208082526030908201527f546f6b656e577261707065643a3a6f6e6c794272696467653a204e6f7420506f60408201526f6c79676f6e5a6b45564d42726964676560801b606082015260800190565b60006001820161102b5761102b610f9b565b506001019056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212208b7986f78e961ad6c0885b86b24ce427045be98073c1f3d7fe18180542ab873564736f6c634300080f0033506f6c79676f6e5a6b45564d4272696467653a3a5f7665726966794c6561663aa26469706673582212207321963add10aa42fbf70097691018c23164a96132c6cd71e46023fffa7d461764736f6c634300080f0033", - "deployedBytecode": "0x608060405260043610620001675760003560e01c80637b6323c111620000c5578063d02103ca1162000078578063d02103ca146200047d578063d96a15f7146200049f578063dbc1697614620004b6578063ed6be5c914620004ce578063ee25560b14620004e5578063ff634ed7146200051657600080fd5b80637b6323c1146200037057806381b1c17414620003955780639e34070f14620003cf578063a08e8a0814620003f4578063aaa13cc2146200041e578063bab161bf146200044357600080fd5b806334ac9cf2116200011e57806334ac9cf214620002a25780633ae0504714620002c45780633da8168214620002dc5780633e1970431462000301578063463855491462000326578063647c576c146200034b57600080fd5b80630871e971146200016c57806315064c9614620001855780632072f6c514620001b657806322e95f2c14620001ce5780632dfdf0b5146200020c578063318aee3d1462000233575b600080fd5b620001836200017d36600462002432565b6200052d565b005b3480156200019257600080fd5b50602254620001a19060ff1681565b60405190151581526020015b60405180910390f35b348015620001c357600080fd5b5062000183620009cf565b348015620001db57600080fd5b50620001f3620001ed366004620024be565b62000a08565b6040516001600160a01b039091168152602001620001ad565b3480156200021957600080fd5b506200022460215481565b604051908152602001620001ad565b3480156200024057600080fd5b506200027d62000252366004620024fa565b60256020526000908152604090205463ffffffff81169064010000000090046001600160a01b031682565b6040805163ffffffff90931683526001600160a01b03909116602083015201620001ad565b348015620002af57600080fd5b50602754620001f3906001600160a01b031681565b348015620002d157600080fd5b506200022462000a5b565b348015620002e957600080fd5b50620001a1620002fb366004620025e7565b62000b4e565b3480156200030e57600080fd5b50620002246200032036600462002664565b62000c4f565b3480156200033357600080fd5b50620001836200034536600462002774565b62000cdc565b3480156200035857600080fd5b50620001836200036a3660046200285a565b62000e82565b3480156200037d57600080fd5b50620001836200038f36600462002774565b62000fe1565b348015620003a257600080fd5b50620001f3620003b4366004620028aa565b6024602052600090815260409020546001600160a01b031681565b348015620003dc57600080fd5b50620001a1620003ee366004620028aa565b62001469565b3480156200040157600080fd5b506200040b600081565b60405160ff9091168152602001620001ad565b3480156200042b57600080fd5b50620001f36200043d366004620028c4565b620014ae565b3480156200045057600080fd5b506022546200046790610100900463ffffffff1681565b60405163ffffffff9091168152602001620001ad565b3480156200048a57600080fd5b50602654620001f3906001600160a01b031681565b62000183620004b036600462002977565b620015c5565b348015620004c357600080fd5b506200018362001771565b348015620004db57600080fd5b5062000467600081565b348015620004f257600080fd5b506200022462000504366004620028aa565b60236020526000908152604090205481565b3480156200052357600080fd5b506200040b600181565b60225460ff16156200055c5760405162461bcd60e51b81526004016200055390620029de565b60405180910390fd5b60225463ffffffff610100909104811690861603620005e45760405162461bcd60e51b815260206004820152603d60248201527f506f6c79676f6e5a6b45564d4272696467653a3a62726964676541737365743a60448201527f2044657374696e6174696f6e2063616e6e6f7420626520697473656c66000000606482015260840162000553565b60008060606001600160a01b03891662000687578534146200067d5760405162461bcd60e51b8152602060048201526044602482018190527f506f6c79676f6e5a6b45564d4272696467653a3a62726964676541737365743a908201527f20416d6f756e7420646f6573206e6f74206d61746368206d6573736167652e76606482015263616c756560e01b608482015260a40162000553565b60009150620008e9565b6001600160a01b03808a1660009081526025602090815260409182902082518084019093525463ffffffff81168352640100000000900490921691810182905290156200074657604051632770a7eb60e21b81526001600160a01b038b1690639dc29fac90620006fe9033908b9060040162002a46565b600060405180830381600087803b1580156200071957600080fd5b505af11580156200072e573d6000803e3d6000fd5b505050508060200151935080600001519250620008e7565b84156200075b576200075b8a888888620017a8565b620007726001600160a01b038b1633308a62001bcc565b899350602260019054906101000a900463ffffffff169250896001600160a01b03166306fdde036040518163ffffffff1660e01b8152600401600060405180830381865afa158015620007c9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620007f3919081019062002ada565b8a6001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa15801562000832573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200085c919081019062002ada565b8b6001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200089b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620008c1919062002b12565b604051602001620008d59392919062002b60565b60405160208183030381529060405291505b505b7f501781209a1f8899323b96b4ef08b168df93e0a90c673d1e4cce39366cb62f9b600083858b8b8b876021546040516200092b98979695949392919062002b9d565b60405180910390a16200095662000950600084868c8c8c888051906020012062000c4f565b62001c39565b6026546001600160a01b03166333d6247d6200097162000a5b565b6040518263ffffffff1660e01b81526004016200099091815260200190565b600060405180830381600087803b158015620009ab57600080fd5b505af1158015620009c0573d6000803e3d6000fd5b50505050505050505050505050565b6027546001600160a01b03163314620009fc5760405162461bcd60e51b8152600401620005539062002c0a565b62000a0662001d8a565b565b600060246000848460405160200162000a2392919062002c67565b60408051601f19818403018152918152815160209283012083529082019290925201600020546001600160a01b031690505b92915050565b602154600090819081805b602081101562000b45578260011660010362000ac6576001816020811062000a925762000a9262002c91565b0154604080516020810192909252810185905260600160405160208183030381529060405280519060200120935062000af3565b60408051602081018690529081018390526060016040516020818303038152906040528051906020012093505b62000b0060028462002cd3565b6040805160208101859052908101849052909350606001604051602081830303815290604052805190602001209150808062000b3c9062002cea565b91505062000a66565b50919392505050565b6000846001600160401b038416825b602081101562000c40578160011660010362000bca5786818151811062000b885762000b8862002c91565b60200260200101518360405160200162000bac929190918252602082015260400190565b60405160208183030381529060405280519060200120925062000c1c565b8287828151811062000be05762000be062002c91565b602002602001015160405160200162000c03929190918252602082015260400190565b6040516020818303038152906040528051906020012092505b62000c2960028362002cd3565b91508062000c378162002cea565b91505062000b5d565b5050821490505b949350505050565b6040516001600160f81b031960f889901b1660208201526001600160e01b031960e088811b821660218401526001600160601b0319606089811b821660258601529188901b909216603984015285901b16603d8201526051810183905260718101829052600090609101604051602081830303815290604052805190602001209050979650505050505050565b60225460ff161562000d025760405162461bcd60e51b81526004016200055390620029de565b62000d188a8a8a8a8a8a8a8a8a8a600162001de8565b62000d298963ffffffff1662002073565b6000836001600160a01b03168387898560405160240162000d4d9392919062002d06565b60408051601f198184030181529181526020820180516001600160e01b0316630c035af960e11b1790525162000d84919062002d41565b60006040518083038185875af1925050503d806000811462000dc3576040519150601f19603f3d011682016040523d82523d6000602084013e62000dc8565b606091505b505090508062000e345760405162461bcd60e51b815260206004820152603060248201527f506f6c79676f6e5a6b45564d4272696467653a3a636c61696d4d65737361676560448201526f0e8813595cdcd859d94819985a5b195960821b606482015260840162000553565b7f25308c93ceeed162da955b3f7ce3e3f93606579e40fb92029faa9efe275459838a8888878760405162000e6d95949392919062002d5f565b60405180910390a15050505050505050505050565b600054610100900460ff161580801562000ea35750600054600160ff909116105b8062000ebf5750303b15801562000ebf575060005460ff166001145b62000f245760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840162000553565b6000805460ff19166001179055801562000f48576000805461ff0019166101001790555b6022805463ffffffff86166101000264ffffffff0019909116179055602680546001600160a01b038086166001600160a01b0319928316179092556027805492851692909116919091179055801562000fdb576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b60225460ff1615620010075760405162461bcd60e51b81526004016200055390620029de565b6200101d8a8a8a8a8a8a8a8a8a8a600062001de8565b6200102e8963ffffffff1662002073565b6001600160a01b0385166200112557604080516000808252602082019092526001600160a01b03851690849060405162001069919062002d41565b60006040518083038185875af1925050503d8060008114620010a8576040519150601f19603f3d011682016040523d82523d6000602084013e620010ad565b606091505b50509050806200111e5760405162461bcd60e51b815260206004820152603560248201527f506f6c79676f6e5a6b45564d4272696467653a3a636c61696d41737365743a20604482015274115d1a195c881d1c985b9cd9995c8819985a5b1959605a1b606482015260840162000553565b506200141c565b60225463ffffffff6101009091048116908716036200115a57620011546001600160a01b0386168484620020b5565b6200141c565b600086866040516020016200117192919062002c67565b60408051601f198184030181529181528151602092830120600081815260249093529120549091506001600160a01b031680620013b457600080600085806020019051810190620011c3919062002d96565b925092509250600085848484604051620011dd9062002399565b620011eb9392919062002b60565b8190604051809103906000f59050801580156200120c573d6000803e3d6000fd5b506040516340c10f1960e01b81529091506001600160a01b038216906340c10f199062001240908c908c9060040162002a46565b600060405180830381600087803b1580156200125b57600080fd5b505af115801562001270573d6000803e3d6000fd5b50505050806024600088815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060405180604001604052808d63ffffffff1681526020018c6001600160a01b031681525060256000836001600160a01b03166001600160a01b0316815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a8154816001600160a01b0302191690836001600160a01b031602179055509050507fccd7715648d1f2bb13e158f96b5b6c3aeda555d4cb87112e274a6f28bc571d598c8c83604051620013a29392919063ffffffff9390931683526001600160a01b03918216602084015216604082015260600190565b60405180910390a15050505062001419565b6040516340c10f1960e01b81526001600160a01b038216906340c10f1990620013e4908890889060040162002a46565b600060405180830381600087803b158015620013ff57600080fd5b505af115801562001414573d6000803e3d6000fd5b505050505b50505b7f25308c93ceeed162da955b3f7ce3e3f93606579e40fb92029faa9efe2754598389878786866040516200145595949392919062002d5f565b60405180910390a150505050505050505050565b6000806200147a6101008462002cd3565b905060006200148c6101008562002e0b565b60009283526023602052604090922054600190921b9182169091149392505050565b6000808888604051602001620014c692919062002c67565b604051602081830303815290604052805190602001209050600060ff60f81b308360405180602001620014f99062002399565b601f1982820381018352601f90910116604081905262001526908d908d908d908d908d9060200162002e4b565b60408051601f198184030181529082905262001546929160200162002e8c565b604051602081830303815290604052805190602001206040516020016200159f94939291906001600160f81b031994909416845260609290921b6001600160601b03191660018401526015830152603582015260550190565b60408051808303601f1901815291905280516020909101209a9950505050505050505050565b60225460ff1615620015eb5760405162461bcd60e51b81526004016200055390620029de565b60225463ffffffff610100909104811690841603620016735760405162461bcd60e51b815260206004820152603f60248201527f506f6c79676f6e5a6b45564d4272696467653a3a6272696467654d657373616760448201527f653a2044657374696e6174696f6e2063616e6e6f7420626520697473656c6600606482015260840162000553565b7f501781209a1f8899323b96b4ef08b168df93e0a90c673d1e4cce39366cb62f9b6001602260019054906101000a900463ffffffff163386863487602154604051620016c798979695949392919062002b9d565b60405180910390a1620016fe620009506001602260019054906101000a900463ffffffff1633878734888051906020012062000c4f565b6026546001600160a01b03166333d6247d6200171962000a5b565b6040518263ffffffff1660e01b81526004016200173891815260200190565b600060405180830381600087803b1580156200175357600080fd5b505af115801562001768573d6000803e3d6000fd5b50505050505050565b6027546001600160a01b031633146200179e5760405162461bcd60e51b8152600401620005539062002c0a565b62000a06620020d7565b6000620017eb83838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506200218692505050565b9050632afa533160e01b6001600160e01b0319821601620019e05760008080808080806200181d896004818d62002ebf565b8101906200182c919062002eeb565b9650965096509650965096509650336001600160a01b0316876001600160a01b0316146200186e5760405162461bcd60e51b8152600401620005539062002f46565b6001600160a01b0386163014620018995760405162461bcd60e51b8152600401620005539062002fa3565b8a85146200190c5760405162461bcd60e51b815260206004820152603960248201527f506f6c79676f6e5a6b45564d4272696467653a3a5f7065726d69743a205065726044820152780dad2e840c2dadeeadce840c8decae640dcdee840dac2e8c6d603b1b606482015260840162000553565b604080516001600160a01b0389811660248301528881166044830152606482018890526084820187905260ff861660a483015260c4820185905260e48083018590528351808403909101815261010490920183526020820180516001600160e01b031663d505accf60e01b1790529151918e16916200198c919062002d41565b6000604051808303816000865af19150503d8060008114620019cb576040519150601f19603f3d011682016040523d82523d6000602084013e620019d0565b606091505b5050505050505050505062001bc5565b6001600160e01b031981166323f2ebc360e21b1462001a565760405162461bcd60e51b815260206004820152602b60248201527f506f6c79676f6e5a6b45564d4272696467653a3a5f7065726d69743a204e6f7460448201526a081d985b1a590818d85b1b60aa1b606482015260840162000553565b60008080808080808062001a6e8a6004818e62002ebf565b81019062001a7d919062003005565b97509750975097509750975097509750336001600160a01b0316886001600160a01b03161462001ac15760405162461bcd60e51b8152600401620005539062002f46565b6001600160a01b038716301462001aec5760405162461bcd60e51b8152600401620005539062002fa3565b604080516001600160a01b038a811660248301528981166044830152606482018990526084820188905286151560a483015260ff861660c483015260e482018590526101048083018590528351808403909101815261012490920183526020820180516001600160e01b03166323f2ebc360e21b1790529151918f169162001b75919062002d41565b6000604051808303816000865af19150503d806000811462001bb4576040519150601f19603f3d011682016040523d82523d6000602084013e62001bb9565b606091505b50505050505050505050505b5050505050565b6040516001600160a01b038085166024830152831660448201526064810182905262000fdb9085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526200218d565b80600162001c4a602060026200318e565b62001c5691906200319c565b6021541062001cbb5760405162461bcd60e51b815260206004820152602a60248201527f4465706f736974436f6e74726163743a5f6465706f7369743a204d65726b6c65604482015269081d1c995948199d5b1b60b21b606482015260840162000553565b60016021600082825462001cd09190620031b6565b909155505060215460005b602081101562001d7a578160011660010362001d1057826001826020811062001d085762001d0862002c91565b015550505050565b6001816020811062001d265762001d2662002c91565b0154604080516020810192909252810184905260600160405160208183030381529060405280519060200120925060028262001d63919062002cd3565b91508062001d718162002cea565b91505062001cdb565b5062001d85620031d1565b505050565b60225460ff161562001db05760405162461bcd60e51b81526004016200055390620029de565b6022805460ff191660011790556040517f2261efe5aef6fedc1fd1550b25facc9181745623049c7901287030b9ad1a549790600090a1565b62001df98a63ffffffff1662001469565b1562001e505760405162461bcd60e51b815260206004820152603060248201526000805160206200477983398151915260448201526f08105b1c9958591e4818db185a5b595960821b606482015260840162000553565b6026546040805160208082018d90528183018c9052825180830384018152606083019384905280519101206312bd9b1960e11b90925260648101919091526000916001600160a01b03169063257b3632906084016020604051808303816000875af115801562001ec4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001eea9190620031e7565b90508060000362001f4d5760405162461bcd60e51b81526020600482015260376024820152600080516020620047798339815191526044820152760811db1bd8985b115e1a5d149bdbdd081a5b9d985b1a59604a1b606482015260840162000553565b60225463ffffffff878116610100909204161462001fcf5760405162461bcd60e51b815260206004820152604360248201526000805160206200477983398151915260448201527f2044657374696e6174696f6e206e6574776f726b20646f6573206e6f74206d616064820152620e8c6d60eb1b608482015260a40162000553565b602254600090610100900463ffffffff1662001fed57508862001ff0565b50895b6200201b6200200c848b8b8b8b8b8b8051906020012062000c4f565b8e8e63ffffffff168462000b4e565b620009c05760405162461bcd60e51b81526020600482015260326024820152600080516020620047798339815191526044820152711024b73b30b634b21039b6ba10383937b7b360711b606482015260840162000553565b6000620020836101008362002cd3565b90506000620020956101008462002e0b565b6000928352602360205260409092208054600190931b9092179091555050565b62001d858363a9059cbb60e01b848460405160240162001c0192919062002a46565b60225460ff16620021515760405162461bcd60e51b815260206004820152603b60248201527f456d657267656e63794d616e616765723a3a6966456d657267656e637953746160448201527f74653a206f6e6c7920696620656d657267656e63792073746174650000000000606482015260840162000553565b6022805460ff191690556040517f1e5e34eea33501aecf2ebec9fe0e884a40804275ea7fe10b2ba084c8374308b390600090a1565b6020015190565b6000620021e4826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316620022669092919063ffffffff16565b80519091501562001d85578080602001905181019062002205919062003201565b62001d855760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840162000553565b606062000c47848460008585600080866001600160a01b0316858760405162002290919062002d41565b60006040518083038185875af1925050503d8060008114620022cf576040519150601f19603f3d011682016040523d82523d6000602084013e620022d4565b606091505b5091509150620022e787838387620022f2565b979650505050505050565b60608315620023665782516000036200235e576001600160a01b0385163b6200235e5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640162000553565b508162000c47565b62000c4783838151156200237d5781518083602001fd5b8060405162461bcd60e51b815260040162000553919062003221565b611542806200323783390190565b6001600160a01b0381168114620023bd57600080fd5b50565b8035620023cd81620023a7565b919050565b803563ffffffff81168114620023cd57600080fd5b60008083601f840112620023fa57600080fd5b5081356001600160401b038111156200241257600080fd5b6020830191508360208285010111156200242b57600080fd5b9250929050565b60008060008060008060a087890312156200244c57600080fd5b86356200245981620023a7565b95506200246960208801620023d2565b945060408701356200247b81620023a7565b93506060870135925060808701356001600160401b038111156200249e57600080fd5b620024ac89828a01620023e7565b979a9699509497509295939492505050565b60008060408385031215620024d257600080fd5b620024dd83620023d2565b91506020830135620024ef81620023a7565b809150509250929050565b6000602082840312156200250d57600080fd5b81356200251a81620023a7565b9392505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171562002562576200256262002521565b604052919050565b600082601f8301126200257c57600080fd5b813560206001600160401b038211156200259a576200259a62002521565b8160051b620025ab82820162002537565b9283528481018201928281019087851115620025c657600080fd5b83870192505b84831015620022e757823582529183019190830190620025cc565b60008060008060808587031215620025fe57600080fd5b8435935060208501356001600160401b03808211156200261d57600080fd5b6200262b888389016200256a565b94506040870135915080821682146200264357600080fd5b509396929550929360600135925050565b60ff81168114620023bd57600080fd5b600080600080600080600060e0888a0312156200268057600080fd5b87356200268d8162002654565b96506200269d60208901620023d2565b95506040880135620026af81620023a7565b9450620026bf60608901620023d2565b93506080880135620026d181620023a7565b9699959850939692959460a0840135945060c09093013592915050565b60006001600160401b038211156200270a576200270a62002521565b50601f01601f191660200190565b600082601f8301126200272a57600080fd5b8135620027416200273b82620026ee565b62002537565b8181528460208386010111156200275757600080fd5b816020850160208301376000918101602001919091529392505050565b6000806000806000806000806000806101408b8d0312156200279557600080fd5b8a356001600160401b0380821115620027ad57600080fd5b620027bb8e838f016200256a565b9b50620027cb60208e01620023d2565b9a5060408d0135995060608d01359850620027e960808e01620023d2565b9750620027f960a08e01620023c0565b96506200280960c08e01620023d2565b95506200281960e08e01620023c0565b94506101008d013593506101208d01359150808211156200283957600080fd5b50620028488d828e0162002718565b9150509295989b9194979a5092959850565b6000806000606084860312156200287057600080fd5b6200287b84620023d2565b925060208401356200288d81620023a7565b915060408401356200289f81620023a7565b809150509250925092565b600060208284031215620028bd57600080fd5b5035919050565b600080600080600080600060a0888a031215620028e057600080fd5b620028eb88620023d2565b96506020880135620028fd81620023a7565b955060408801356001600160401b03808211156200291a57600080fd5b620029288b838c01620023e7565b909750955060608a01359150808211156200294257600080fd5b50620029518a828b01620023e7565b9094509250506080880135620029678162002654565b8091505092959891949750929550565b6000806000606084860312156200298d57600080fd5b6200299884620023d2565b92506020840135620029aa81620023a7565b915060408401356001600160401b03811115620029c657600080fd5b620029d48682870162002718565b9150509250925092565b60208082526042908201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960408201527f53746174653a206f6e6c79206966206e6f7420656d657267656e637920737461606082015261746560f01b608082015260a00190565b6001600160a01b03929092168252602082015260400190565b60005b8381101562002a7c57818101518382015260200162002a62565b8381111562000fdb5750506000910152565b600082601f83011262002aa057600080fd5b815162002ab16200273b82620026ee565b81815284602083860101111562002ac757600080fd5b62000c4782602083016020870162002a5f565b60006020828403121562002aed57600080fd5b81516001600160401b0381111562002b0457600080fd5b62000c478482850162002a8e565b60006020828403121562002b2557600080fd5b81516200251a8162002654565b6000815180845262002b4c81602086016020860162002a5f565b601f01601f19169290920160200192915050565b60608152600062002b75606083018662002b32565b828103602084015262002b89818662002b32565b91505060ff83166040830152949350505050565b60ff8916815263ffffffff88811660208301526001600160a01b03888116604084015287821660608401528616608083015260a0820185905261010060c0830181905260009162002bf18483018762002b32565b925080851660e085015250509998505050505050505050565b6020808252603a908201527f506f6c79676f6e5a6b45564d3a3a6f6e6c79506f6c79676f6e5a6b45564d3a2060408201527f6f6e6c7920506f6c79676f6e5a6b45564d20636f6e7472616374000000000000606082015260800190565b60e09290921b6001600160e01b031916825260601b6001600160601b031916600482015260180190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60008262002ce55762002ce562002ca7565b500490565b60006001820162002cff5762002cff62002cbd565b5060010190565b6001600160a01b038416815263ffffffff8316602082015260606040820181905260009062002d389083018462002b32565b95945050505050565b6000825162002d5581846020870162002a5f565b9190910192915050565b63ffffffff95861681529390941660208401526001600160a01b039182166040840152166060820152608081019190915260a00190565b60008060006060848603121562002dac57600080fd5b83516001600160401b038082111562002dc457600080fd5b62002dd28783880162002a8e565b9450602086015191508082111562002de957600080fd5b5062002df88682870162002a8e565b92505060408401516200289f8162002654565b60008262002e1d5762002e1d62002ca7565b500690565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60608152600062002e6160608301878962002e22565b828103602084015262002e7681868862002e22565b91505060ff831660408301529695505050505050565b6000835162002ea081846020880162002a5f565b83519083019062002eb681836020880162002a5f565b01949350505050565b6000808585111562002ed057600080fd5b8386111562002ede57600080fd5b5050820193919092039150565b600080600080600080600060e0888a03121562002f0757600080fd5b873562002f1481620023a7565b9650602088013562002f2681620023a7565b955060408801359450606088013593506080880135620026d18162002654565b6020808252603c908201527f506f6c79676f6e5a6b45564d4272696467653a3a5f7065726d69743a2050657260408201527f6d6974206f776e6572206d757374206265207468652073656e64657200000000606082015260800190565b60208082526033908201527f506f6c79676f6e5a6b45564d4272696467653a3a5f7065726d69743a205370656040820152726e646572206d7573742062652027746869732760681b606082015260800190565b8015158114620023bd57600080fd5b600080600080600080600080610100898b0312156200302357600080fd5b88356200303081620023a7565b975060208901356200304281620023a7565b965060408901359550606089013594506080890135620030628162002ff6565b935060a0890135620030748162002654565b979a969950949793969295929450505060c08201359160e0013590565b600181815b80851115620030d2578160001904821115620030b657620030b662002cbd565b80851615620030c457918102915b93841c939080029062003096565b509250929050565b600082620030eb5750600162000a55565b81620030fa5750600062000a55565b81600181146200311357600281146200311e576200313e565b600191505062000a55565b60ff84111562003132576200313262002cbd565b50506001821b62000a55565b5060208310610133831016604e8410600b841016171562003163575081810a62000a55565b6200316f838362003091565b806000190482111562003186576200318662002cbd565b029392505050565b60006200251a8383620030da565b600082821015620031b157620031b162002cbd565b500390565b60008219821115620031cc57620031cc62002cbd565b500190565b634e487b7160e01b600052600160045260246000fd5b600060208284031215620031fa57600080fd5b5051919050565b6000602082840312156200321457600080fd5b81516200251a8162002ff6565b6020815260006200251a602083018462002b3256fe60c06040523480156200001157600080fd5b5060405162001542380380620015428339810160408190526200003491620002ad565b82826003620000448382620003c1565b506004620000538282620003c1565b5050600580546001600160a81b0319163360ff60a01b191617600160a01b60ff851602179055504660808190526200008b9062000098565b60a052506200048d915050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f620000c562000146565b805160209182012060408051808201825260018152603160f81b90840152805192830193909352918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060820152608081018390523060a082015260c001604051602081830303815290604052805190602001209050919050565b606060038054620001579062000332565b80601f0160208091040260200160405190810160405280929190818152602001828054620001859062000332565b8015620001d65780601f10620001aa57610100808354040283529160200191620001d6565b820191906000526020600020905b815481529060010190602001808311620001b857829003601f168201915b5050505050905090565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200020857600080fd5b81516001600160401b0380821115620002255762000225620001e0565b604051601f8301601f19908116603f01168101908282118183101715620002505762000250620001e0565b816040528381526020925086838588010111156200026d57600080fd5b600091505b8382101562000291578582018301518183018401529082019062000272565b83821115620002a35760008385830101525b9695505050505050565b600080600060608486031215620002c357600080fd5b83516001600160401b0380821115620002db57600080fd5b620002e987838801620001f6565b945060208601519150808211156200030057600080fd5b506200030f86828701620001f6565b925050604084015160ff811681146200032757600080fd5b809150509250925092565b600181811c908216806200034757607f821691505b6020821081036200036857634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620003bc57600081815260208120601f850160051c81016020861015620003975750805b601f850160051c820191505b81811015620003b857828155600101620003a3565b5050505b505050565b81516001600160401b03811115620003dd57620003dd620001e0565b620003f581620003ee845462000332565b846200036e565b602080601f8311600181146200042d5760008415620004145750858301515b600019600386901b1c1916600185901b178555620003b8565b600085815260208120601f198616915b828110156200045e578886015182559484019460019091019084016200043d565b50858210156200047d5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60805160a051611088620004ba60003960006104690152600081816102f9015261043301526110886000f3fe608060405234801561001057600080fd5b50600436106101375760003560e01c806370a08231116100b8578063a457c2d71161007c578063a457c2d7146102ce578063a9059cbb146102e1578063cd0d0096146102f4578063d505accf1461031b578063dd62ed3e1461032e578063ffa1ad741461034157600080fd5b806370a082311461023f5780637ecebe001461026857806395d89b41146102885780639dc29fac14610290578063a3c573eb146102a357600080fd5b806330adf81f116100ff57806330adf81f146101c9578063313ce567146101f05780633644e5151461020f578063395093511461021757806340c10f191461022a57600080fd5b806306fdde031461013c578063095ea7b31461015a57806318160ddd1461017d57806320606b701461018f57806323b872dd146101b6575b600080fd5b610144610361565b6040516101519190610dc2565b60405180910390f35b61016d610168366004610e33565b6103f3565b6040519015158152602001610151565b6002545b604051908152602001610151565b6101817f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81565b61016d6101c4366004610e5d565b61040b565b6101817f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b600554600160a01b900460ff1660405160ff9091168152602001610151565b61018161042f565b61016d610225366004610e33565b61048b565b61023d610238366004610e33565b6104ad565b005b61018161024d366004610e99565b6001600160a01b031660009081526020819052604090205490565b610181610276366004610e99565b60066020526000908152604090205481565b6101446104ee565b61023d61029e366004610e33565b6104fd565b6005546102b6906001600160a01b031681565b6040516001600160a01b039091168152602001610151565b61016d6102dc366004610e33565b610531565b61016d6102ef366004610e33565b6105ac565b6101817f000000000000000000000000000000000000000000000000000000000000000081565b61023d610329366004610ebb565b6105ba565b61018161033c366004610f2e565b6107f5565b610144604051806040016040528060018152602001603160f81b81525081565b60606003805461037090610f61565b80601f016020809104026020016040519081016040528092919081815260200182805461039c90610f61565b80156103e95780601f106103be576101008083540402835291602001916103e9565b820191906000526020600020905b8154815290600101906020018083116103cc57829003601f168201915b5050505050905090565b600033610401818585610820565b5060019392505050565b600033610419858285610945565b6104248585856109bf565b506001949350505050565b60007f000000000000000000000000000000000000000000000000000000000000000046146104665761046146610b51565b905090565b507f000000000000000000000000000000000000000000000000000000000000000090565b60003361040181858561049e83836107f5565b6104a89190610fb1565b610820565b6005546001600160a01b031633146104e05760405162461bcd60e51b81526004016104d790610fc9565b60405180910390fd5b6104ea8282610bfd565b5050565b60606004805461037090610f61565b6005546001600160a01b031633146105275760405162461bcd60e51b81526004016104d790610fc9565b6104ea8282610caa565b6000338161053f82866107f5565b90508381101561059f5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016104d7565b6104248286868403610820565b6000336104018185856109bf565b834211156106165760405162461bcd60e51b8152602060048201526024808201527f546f6b656e577261707065643a3a7065726d69743a20457870697265642070656044820152631c9b5a5d60e21b60648201526084016104d7565b6001600160a01b038716600090815260066020526040812080547f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918a918a918a91908661066383611019565b909155506040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e00160405160208183030381529060405280519060200120905060006106c161042f565b60405161190160f01b602082015260228101919091526042810183905260620160408051601f198184030181528282528051602091820120600080855291840180845281905260ff89169284019290925260608301879052608083018690529092509060019060a0016020604051602081039080840390855afa15801561074c573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116158015906107825750896001600160a01b0316816001600160a01b0316145b6107de5760405162461bcd60e51b815260206004820152602760248201527f546f6b656e577261707065643a3a7065726d69743a20496e76616c6964207369604482015266676e617475726560c81b60648201526084016104d7565b6107e98a8a8a610820565b50505050505050505050565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166108825760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016104d7565b6001600160a01b0382166108e35760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016104d7565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b600061095184846107f5565b905060001981146109b957818110156109ac5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016104d7565b6109b98484848403610820565b50505050565b6001600160a01b038316610a235760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016104d7565b6001600160a01b038216610a855760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016104d7565b6001600160a01b03831660009081526020819052604090205481811015610afd5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016104d7565b6001600160a01b0384811660008181526020818152604080832087870390559387168083529184902080548701905592518581529092600080516020611033833981519152910160405180910390a36109b9565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f610b7c610361565b805160209182012060408051808201825260018152603160f81b90840152805192830193909352918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060820152608081018390523060a082015260c001604051602081830303815290604052805190602001209050919050565b6001600160a01b038216610c535760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016104d7565b8060026000828254610c659190610fb1565b90915550506001600160a01b03821660008181526020818152604080832080548601905551848152600080516020611033833981519152910160405180910390a35050565b6001600160a01b038216610d0a5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016104d7565b6001600160a01b03821660009081526020819052604090205481811015610d7e5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016104d7565b6001600160a01b0383166000818152602081815260408083208686039055600280548790039055518581529192916000805160206110338339815191529101610938565b600060208083528351808285015260005b81811015610def57858101830151858201604001528201610dd3565b81811115610e01576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b0381168114610e2e57600080fd5b919050565b60008060408385031215610e4657600080fd5b610e4f83610e17565b946020939093013593505050565b600080600060608486031215610e7257600080fd5b610e7b84610e17565b9250610e8960208501610e17565b9150604084013590509250925092565b600060208284031215610eab57600080fd5b610eb482610e17565b9392505050565b600080600080600080600060e0888a031215610ed657600080fd5b610edf88610e17565b9650610eed60208901610e17565b95506040880135945060608801359350608088013560ff81168114610f1157600080fd5b9699959850939692959460a0840135945060c09093013592915050565b60008060408385031215610f4157600080fd5b610f4a83610e17565b9150610f5860208401610e17565b90509250929050565b600181811c90821680610f7557607f821691505b602082108103610f9557634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60008219821115610fc457610fc4610f9b565b500190565b60208082526030908201527f546f6b656e577261707065643a3a6f6e6c794272696467653a204e6f7420506f60408201526f6c79676f6e5a6b45564d42726964676560801b606082015260800190565b60006001820161102b5761102b610f9b565b506001019056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212208b7986f78e961ad6c0885b86b24ce427045be98073c1f3d7fe18180542ab873564736f6c634300080f0033506f6c79676f6e5a6b45564d4272696467653a3a5f7665726966794c6561663aa26469706673582212207321963add10aa42fbf70097691018c23164a96132c6cd71e46023fffa7d461764736f6c634300080f0033", + "bytecode": "0x608060405234801561001057600080fd5b506147e1806100206000396000f3fe608060405260043610620001675760003560e01c80637b6323c111620000c5578063d02103ca1162000078578063d02103ca146200047d578063d96a15f7146200049f578063dbc1697614620004b6578063ed6be5c914620004ce578063ee25560b14620004e5578063ff634ed7146200051657600080fd5b80637b6323c1146200037057806381b1c17414620003955780639e34070f14620003cf578063a08e8a0814620003f4578063aaa13cc2146200041e578063bab161bf146200044357600080fd5b806334ac9cf2116200011e57806334ac9cf214620002a25780633ae0504714620002c45780633e19704314620002dc578063463855491462000301578063647c576c14620003265780637524b838146200034b57600080fd5b80630871e971146200016c57806315064c9614620001855780632072f6c514620001b657806322e95f2c14620001ce5780632dfdf0b5146200020c578063318aee3d1462000233575b600080fd5b620001836200017d3660046200240a565b6200052d565b005b3480156200019257600080fd5b50602254620001a19060ff1681565b60405190151581526020015b60405180910390f35b348015620001c357600080fd5b5062000183620009cf565b348015620001db57600080fd5b50620001f3620001ed36600462002496565b62000a08565b6040516001600160a01b039091168152602001620001ad565b3480156200021957600080fd5b506200022460215481565b604051908152602001620001ad565b3480156200024057600080fd5b506200027d62000252366004620024d2565b60256020526000908152604090205463ffffffff81169064010000000090046001600160a01b031682565b6040805163ffffffff90931683526001600160a01b03909116602083015201620001ad565b348015620002af57600080fd5b50602754620001f3906001600160a01b031681565b348015620002d157600080fd5b506200022462000a5b565b348015620002e957600080fd5b5062000224620002fb36600462002509565b62000b4e565b3480156200030e57600080fd5b506200018362000320366004620026df565b62000bdb565b3480156200033357600080fd5b506200018362000345366004620027c5565b62000d81565b3480156200035857600080fd5b50620001a16200036a36600462002815565b62000ee0565b3480156200037d57600080fd5b50620001836200038f366004620026df565b62000fde565b348015620003a257600080fd5b50620001f3620003b436600462002879565b6024602052600090815260409020546001600160a01b031681565b348015620003dc57600080fd5b50620001a1620003ee36600462002879565b62001447565b3480156200040157600080fd5b506200040b600081565b60405160ff9091168152602001620001ad565b3480156200042b57600080fd5b50620001f36200043d36600462002893565b6200148c565b3480156200045057600080fd5b506022546200046790610100900463ffffffff1681565b60405163ffffffff9091168152602001620001ad565b3480156200048a57600080fd5b50602654620001f3906001600160a01b031681565b62000183620004b036600462002946565b620015a3565b348015620004c357600080fd5b50620001836200174f565b348015620004db57600080fd5b5062000467600081565b348015620004f257600080fd5b50620002246200050436600462002879565b60236020526000908152604090205481565b3480156200052357600080fd5b506200040b600181565b60225460ff16156200055c5760405162461bcd60e51b81526004016200055390620029ad565b60405180910390fd5b60225463ffffffff610100909104811690861603620005e45760405162461bcd60e51b815260206004820152603d60248201527f506f6c79676f6e5a6b45564d4272696467653a3a62726964676541737365743a60448201527f2044657374696e6174696f6e2063616e6e6f7420626520697473656c66000000606482015260840162000553565b60008060606001600160a01b03891662000687578534146200067d5760405162461bcd60e51b8152602060048201526044602482018190527f506f6c79676f6e5a6b45564d4272696467653a3a62726964676541737365743a908201527f20416d6f756e7420646f6573206e6f74206d61746368206d6573736167652e76606482015263616c756560e01b608482015260a40162000553565b60009150620008e9565b6001600160a01b03808a1660009081526025602090815260409182902082518084019093525463ffffffff81168352640100000000900490921691810182905290156200074657604051632770a7eb60e21b81526001600160a01b038b1690639dc29fac90620006fe9033908b9060040162002a15565b600060405180830381600087803b1580156200071957600080fd5b505af11580156200072e573d6000803e3d6000fd5b505050508060200151935080600001519250620008e7565b84156200075b576200075b8a88888862001786565b620007726001600160a01b038b1633308a62001baa565b899350602260019054906101000a900463ffffffff169250896001600160a01b03166306fdde036040518163ffffffff1660e01b8152600401600060405180830381865afa158015620007c9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620007f3919081019062002aa9565b8a6001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa15801562000832573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200085c919081019062002aa9565b8b6001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200089b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620008c1919062002ae1565b604051602001620008d59392919062002b2f565b60405160208183030381529060405291505b505b7f501781209a1f8899323b96b4ef08b168df93e0a90c673d1e4cce39366cb62f9b600083858b8b8b876021546040516200092b98979695949392919062002b6c565b60405180910390a16200095662000950600084868c8c8c888051906020012062000b4e565b62001c17565b6026546001600160a01b03166333d6247d6200097162000a5b565b6040518263ffffffff1660e01b81526004016200099091815260200190565b600060405180830381600087803b158015620009ab57600080fd5b505af1158015620009c0573d6000803e3d6000fd5b50505050505050505050505050565b6027546001600160a01b03163314620009fc5760405162461bcd60e51b8152600401620005539062002bd9565b62000a0662001d68565b565b600060246000848460405160200162000a2392919062002c36565b60408051601f19818403018152918152815160209283012083529082019290925201600020546001600160a01b031690505b92915050565b602154600090819081805b602081101562000b45578260011660010362000ac6576001816020811062000a925762000a9262002c60565b0154604080516020810192909252810185905260600160405160208183030381529060405280519060200120935062000af3565b60408051602081018690529081018390526060016040516020818303038152906040528051906020012093505b62000b0060028462002ca2565b6040805160208101859052908101849052909350606001604051602081830303815290604052805190602001209150808062000b3c9062002cb9565b91505062000a66565b50919392505050565b6040516001600160f81b031960f889901b1660208201526001600160e01b031960e088811b821660218401526001600160601b0319606089811b821660258601529188901b909216603984015285901b16603d8201526051810183905260718101829052600090609101604051602081830303815290604052805190602001209050979650505050505050565b60225460ff161562000c015760405162461bcd60e51b81526004016200055390620029ad565b62000c178a8a8a8a8a8a8a8a8a8a600162001dc6565b62000c288963ffffffff166200204b565b6000836001600160a01b03168387898560405160240162000c4c9392919062002cd5565b60408051601f198184030181529181526020820180516001600160e01b0316630c035af960e11b1790525162000c83919062002d10565b60006040518083038185875af1925050503d806000811462000cc2576040519150601f19603f3d011682016040523d82523d6000602084013e62000cc7565b606091505b505090508062000d335760405162461bcd60e51b815260206004820152603060248201527f506f6c79676f6e5a6b45564d4272696467653a3a636c61696d4d65737361676560448201526f0e8813595cdcd859d94819985a5b195960821b606482015260840162000553565b7f25308c93ceeed162da955b3f7ce3e3f93606579e40fb92029faa9efe275459838a8888878760405162000d6c95949392919062002d2e565b60405180910390a15050505050505050505050565b600054610100900460ff161580801562000da25750600054600160ff909116105b8062000dbe5750303b15801562000dbe575060005460ff166001145b62000e235760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840162000553565b6000805460ff19166001179055801562000e47576000805461ff0019166101001790555b6022805463ffffffff86166101000264ffffffff0019909116179055602680546001600160a01b038086166001600160a01b0319928316179092556027805492851692909116919091179055801562000eda576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b60008463ffffffff8416825b602081101562000fcf578160011660010362000f595786818151811062000f175762000f1762002c60565b60200260200101518360405160200162000f3b929190918252602082015260400190565b60405160208183030381529060405280519060200120925062000fab565b8287828151811062000f6f5762000f6f62002c60565b602002602001015160405160200162000f92929190918252602082015260400190565b6040516020818303038152906040528051906020012092505b62000fb860028362002ca2565b91508062000fc68162002cb9565b91505062000eec565b5050821490505b949350505050565b60225460ff1615620010045760405162461bcd60e51b81526004016200055390620029ad565b6200101a8a8a8a8a8a8a8a8a8a8a600062001dc6565b6200102b8963ffffffff166200204b565b6001600160a01b0385166200112257604080516000808252602082019092526001600160a01b03851690849060405162001066919062002d10565b60006040518083038185875af1925050503d8060008114620010a5576040519150601f19603f3d011682016040523d82523d6000602084013e620010aa565b606091505b50509050806200111b5760405162461bcd60e51b815260206004820152603560248201527f506f6c79676f6e5a6b45564d4272696467653a3a636c61696d41737365743a20604482015274115d1a195c881d1c985b9cd9995c8819985a5b1959605a1b606482015260840162000553565b50620013fa565b60225463ffffffff6101009091048116908716036200115757620011516001600160a01b03861684846200208d565b620013fa565b600086866040516020016200116e92919062002c36565b60408051601f198184030181529181528151602092830120600081815260249093529120549091506001600160a01b0316806200139257600080600085806020019051810190620011c0919062002d65565b925092509250600085848484604051620011da9062002371565b620011e89392919062002b2f565b8190604051809103906000f590508015801562001209573d6000803e3d6000fd5b506040516340c10f1960e01b81529091506001600160a01b038216906340c10f19906200123d908c908c9060040162002a15565b600060405180830381600087803b1580156200125857600080fd5b505af11580156200126d573d6000803e3d6000fd5b50505050806024600088815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060405180604001604052808d63ffffffff1681526020018c6001600160a01b031681525060256000836001600160a01b03166001600160a01b0316815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a8154816001600160a01b0302191690836001600160a01b031602179055509050507f490e59a1701b938786ac72570a1efeac994a3dbe96e2e883e19e902ace6e6a398c8c838a60405162001380949392919062002dda565b60405180910390a150505050620013f7565b6040516340c10f1960e01b81526001600160a01b038216906340c10f1990620013c2908890889060040162002a15565b600060405180830381600087803b158015620013dd57600080fd5b505af1158015620013f2573d6000803e3d6000fd5b505050505b50505b7f25308c93ceeed162da955b3f7ce3e3f93606579e40fb92029faa9efe2754598389878786866040516200143395949392919062002d2e565b60405180910390a150505050505050505050565b600080620014586101008462002ca2565b905060006200146a6101008562002e1e565b60009283526023602052604090922054600190921b9182169091149392505050565b6000808888604051602001620014a492919062002c36565b604051602081830303815290604052805190602001209050600060ff60f81b308360405180602001620014d79062002371565b601f1982820381018352601f90910116604081905262001504908d908d908d908d908d9060200162002e5e565b60408051601f198184030181529082905262001524929160200162002e9f565b604051602081830303815290604052805190602001206040516020016200157d94939291906001600160f81b031994909416845260609290921b6001600160601b03191660018401526015830152603582015260550190565b60408051808303601f1901815291905280516020909101209a9950505050505050505050565b60225460ff1615620015c95760405162461bcd60e51b81526004016200055390620029ad565b60225463ffffffff610100909104811690841603620016515760405162461bcd60e51b815260206004820152603f60248201527f506f6c79676f6e5a6b45564d4272696467653a3a6272696467654d657373616760448201527f653a2044657374696e6174696f6e2063616e6e6f7420626520697473656c6600606482015260840162000553565b7f501781209a1f8899323b96b4ef08b168df93e0a90c673d1e4cce39366cb62f9b6001602260019054906101000a900463ffffffff163386863487602154604051620016a598979695949392919062002b6c565b60405180910390a1620016dc620009506001602260019054906101000a900463ffffffff1633878734888051906020012062000b4e565b6026546001600160a01b03166333d6247d620016f762000a5b565b6040518263ffffffff1660e01b81526004016200171691815260200190565b600060405180830381600087803b1580156200173157600080fd5b505af115801562001746573d6000803e3d6000fd5b50505050505050565b6027546001600160a01b031633146200177c5760405162461bcd60e51b8152600401620005539062002bd9565b62000a06620020af565b6000620017c983838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506200215e92505050565b9050632afa533160e01b6001600160e01b0319821601620019be576000808080808080620017fb896004818d62002ed2565b8101906200180a919062002efe565b9650965096509650965096509650336001600160a01b0316876001600160a01b0316146200184c5760405162461bcd60e51b8152600401620005539062002f59565b6001600160a01b0386163014620018775760405162461bcd60e51b8152600401620005539062002fb6565b8a8514620018ea5760405162461bcd60e51b815260206004820152603960248201527f506f6c79676f6e5a6b45564d4272696467653a3a5f7065726d69743a205065726044820152780dad2e840c2dadeeadce840c8decae640dcdee840dac2e8c6d603b1b606482015260840162000553565b604080516001600160a01b0389811660248301528881166044830152606482018890526084820187905260ff861660a483015260c4820185905260e48083018590528351808403909101815261010490920183526020820180516001600160e01b031663d505accf60e01b1790529151918e16916200196a919062002d10565b6000604051808303816000865af19150503d8060008114620019a9576040519150601f19603f3d011682016040523d82523d6000602084013e620019ae565b606091505b5050505050505050505062001ba3565b6001600160e01b031981166323f2ebc360e21b1462001a345760405162461bcd60e51b815260206004820152602b60248201527f506f6c79676f6e5a6b45564d4272696467653a3a5f7065726d69743a204e6f7460448201526a081d985b1a590818d85b1b60aa1b606482015260840162000553565b60008080808080808062001a4c8a6004818e62002ed2565b81019062001a5b919062003018565b97509750975097509750975097509750336001600160a01b0316886001600160a01b03161462001a9f5760405162461bcd60e51b8152600401620005539062002f59565b6001600160a01b038716301462001aca5760405162461bcd60e51b8152600401620005539062002fb6565b604080516001600160a01b038a811660248301528981166044830152606482018990526084820188905286151560a483015260ff861660c483015260e482018590526101048083018590528351808403909101815261012490920183526020820180516001600160e01b03166323f2ebc360e21b1790529151918f169162001b53919062002d10565b6000604051808303816000865af19150503d806000811462001b92576040519150601f19603f3d011682016040523d82523d6000602084013e62001b97565b606091505b50505050505050505050505b5050505050565b6040516001600160a01b038085166024830152831660448201526064810182905262000eda9085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915262002165565b80600162001c2860206002620031a1565b62001c349190620031af565b6021541062001c995760405162461bcd60e51b815260206004820152602a60248201527f4465706f736974436f6e74726163743a5f6465706f7369743a204d65726b6c65604482015269081d1c995948199d5b1b60b21b606482015260840162000553565b60016021600082825462001cae9190620031c9565b909155505060215460005b602081101562001d58578160011660010362001cee57826001826020811062001ce65762001ce662002c60565b015550505050565b6001816020811062001d045762001d0462002c60565b0154604080516020810192909252810184905260600160405160208183030381529060405280519060200120925060028262001d41919062002ca2565b91508062001d4f8162002cb9565b91505062001cb9565b5062001d63620031e4565b505050565b60225460ff161562001d8e5760405162461bcd60e51b81526004016200055390620029ad565b6022805460ff191660011790556040517f2261efe5aef6fedc1fd1550b25facc9181745623049c7901287030b9ad1a549790600090a1565b62001dd78a63ffffffff1662001447565b1562001e2e5760405162461bcd60e51b815260206004820152603060248201526000805160206200478c83398151915260448201526f08105b1c9958591e4818db185a5b595960821b606482015260840162000553565b6026546040805160208082018d90528183018c9052825180830384018152606083019384905280519101206312bd9b1960e11b90925260648101919091526000916001600160a01b03169063257b3632906084016020604051808303816000875af115801562001ea2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001ec89190620031fa565b90508060000362001f2b5760405162461bcd60e51b815260206004820152603760248201526000805160206200478c8339815191526044820152760811db1bd8985b115e1a5d149bdbdd081a5b9d985b1a59604a1b606482015260840162000553565b60225463ffffffff878116610100909204161462001fad5760405162461bcd60e51b815260206004820152604360248201526000805160206200478c83398151915260448201527f2044657374696e6174696f6e206e6574776f726b20646f6573206e6f74206d616064820152620e8c6d60eb1b608482015260a40162000553565b602254600090610100900463ffffffff1662001fcb57508862001fce565b50895b62001ff362001fea848b8b8b8b8b8b8051906020012062000b4e565b8e8e8462000ee0565b620009c05760405162461bcd60e51b815260206004820152603260248201526000805160206200478c8339815191526044820152711024b73b30b634b21039b6ba10383937b7b360711b606482015260840162000553565b60006200205b6101008362002ca2565b905060006200206d6101008462002e1e565b6000928352602360205260409092208054600190931b9092179091555050565b62001d638363a9059cbb60e01b848460405160240162001bdf92919062002a15565b60225460ff16620021295760405162461bcd60e51b815260206004820152603b60248201527f456d657267656e63794d616e616765723a3a6966456d657267656e637953746160448201527f74653a206f6e6c7920696620656d657267656e63792073746174650000000000606482015260840162000553565b6022805460ff191690556040517f1e5e34eea33501aecf2ebec9fe0e884a40804275ea7fe10b2ba084c8374308b390600090a1565b6020015190565b6000620021bc826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166200223e9092919063ffffffff16565b80519091501562001d635780806020019051810190620021dd919062003214565b62001d635760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840162000553565b606062000fd6848460008585600080866001600160a01b0316858760405162002268919062002d10565b60006040518083038185875af1925050503d8060008114620022a7576040519150601f19603f3d011682016040523d82523d6000602084013e620022ac565b606091505b5091509150620022bf87838387620022ca565b979650505050505050565b606083156200233e57825160000362002336576001600160a01b0385163b620023365760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640162000553565b508162000fd6565b62000fd68383815115620023555781518083602001fd5b8060405162461bcd60e51b815260040162000553919062003234565b611542806200324a83390190565b6001600160a01b03811681146200239557600080fd5b50565b8035620023a5816200237f565b919050565b803563ffffffff81168114620023a557600080fd5b60008083601f840112620023d257600080fd5b5081356001600160401b03811115620023ea57600080fd5b6020830191508360208285010111156200240357600080fd5b9250929050565b60008060008060008060a087890312156200242457600080fd5b863562002431816200237f565b95506200244160208801620023aa565b9450604087013562002453816200237f565b93506060870135925060808701356001600160401b038111156200247657600080fd5b6200248489828a01620023bf565b979a9699509497509295939492505050565b60008060408385031215620024aa57600080fd5b620024b583620023aa565b91506020830135620024c7816200237f565b809150509250929050565b600060208284031215620024e557600080fd5b8135620024f2816200237f565b9392505050565b60ff811681146200239557600080fd5b600080600080600080600060e0888a0312156200252557600080fd5b87356200253281620024f9565b96506200254260208901620023aa565b9550604088013562002554816200237f565b94506200256460608901620023aa565b9350608088013562002576816200237f565b9699959850939692959460a0840135945060c09093013592915050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715620025d457620025d462002593565b604052919050565b600082601f830112620025ee57600080fd5b813560206001600160401b038211156200260c576200260c62002593565b8160051b6200261d828201620025a9565b92835284810182019282810190878511156200263857600080fd5b83870192505b84831015620022bf578235825291830191908301906200263e565b60006001600160401b0382111562002675576200267562002593565b50601f01601f191660200190565b600082601f8301126200269557600080fd5b8135620026ac620026a68262002659565b620025a9565b818152846020838601011115620026c257600080fd5b816020850160208301376000918101602001919091529392505050565b6000806000806000806000806000806101408b8d0312156200270057600080fd5b8a356001600160401b03808211156200271857600080fd5b620027268e838f01620025dc565b9b506200273660208e01620023aa565b9a5060408d0135995060608d013598506200275460808e01620023aa565b97506200276460a08e0162002398565b96506200277460c08e01620023aa565b95506200278460e08e0162002398565b94506101008d013593506101208d0135915080821115620027a457600080fd5b50620027b38d828e0162002683565b9150509295989b9194979a5092959850565b600080600060608486031215620027db57600080fd5b620027e684620023aa565b92506020840135620027f8816200237f565b915060408401356200280a816200237f565b809150509250925092565b600080600080608085870312156200282c57600080fd5b8435935060208501356001600160401b038111156200284a57600080fd5b6200285887828801620025dc565b9350506200286960408601620023aa565b9396929550929360600135925050565b6000602082840312156200288c57600080fd5b5035919050565b600080600080600080600060a0888a031215620028af57600080fd5b620028ba88620023aa565b96506020880135620028cc816200237f565b955060408801356001600160401b0380821115620028e957600080fd5b620028f78b838c01620023bf565b909750955060608a01359150808211156200291157600080fd5b50620029208a828b01620023bf565b90945092505060808801356200293681620024f9565b8091505092959891949750929550565b6000806000606084860312156200295c57600080fd5b6200296784620023aa565b9250602084013562002979816200237f565b915060408401356001600160401b038111156200299557600080fd5b620029a38682870162002683565b9150509250925092565b60208082526042908201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960408201527f53746174653a206f6e6c79206966206e6f7420656d657267656e637920737461606082015261746560f01b608082015260a00190565b6001600160a01b03929092168252602082015260400190565b60005b8381101562002a4b57818101518382015260200162002a31565b8381111562000eda5750506000910152565b600082601f83011262002a6f57600080fd5b815162002a80620026a68262002659565b81815284602083860101111562002a9657600080fd5b62000fd682602083016020870162002a2e565b60006020828403121562002abc57600080fd5b81516001600160401b0381111562002ad357600080fd5b62000fd68482850162002a5d565b60006020828403121562002af457600080fd5b8151620024f281620024f9565b6000815180845262002b1b81602086016020860162002a2e565b601f01601f19169290920160200192915050565b60608152600062002b44606083018662002b01565b828103602084015262002b58818662002b01565b91505060ff83166040830152949350505050565b60ff8916815263ffffffff88811660208301526001600160a01b03888116604084015287821660608401528616608083015260a0820185905261010060c0830181905260009162002bc08483018762002b01565b925080851660e085015250509998505050505050505050565b6020808252603a908201527f506f6c79676f6e5a6b45564d3a3a6f6e6c79506f6c79676f6e5a6b45564d3a2060408201527f6f6e6c7920506f6c79676f6e5a6b45564d20636f6e7472616374000000000000606082015260800190565b60e09290921b6001600160e01b031916825260601b6001600160601b031916600482015260180190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60008262002cb45762002cb462002c76565b500490565b60006001820162002cce5762002cce62002c8c565b5060010190565b6001600160a01b038416815263ffffffff8316602082015260606040820181905260009062002d079083018462002b01565b95945050505050565b6000825162002d2481846020870162002a2e565b9190910192915050565b63ffffffff95861681529390941660208401526001600160a01b039182166040840152166060820152608081019190915260a00190565b60008060006060848603121562002d7b57600080fd5b83516001600160401b038082111562002d9357600080fd5b62002da18783880162002a5d565b9450602086015191508082111562002db857600080fd5b5062002dc78682870162002a5d565b92505060408401516200280a81620024f9565b63ffffffff851681526001600160a01b0384811660208301528316604082015260806060820181905260009062002e149083018462002b01565b9695505050505050565b60008262002e305762002e3062002c76565b500690565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60608152600062002e7460608301878962002e35565b828103602084015262002e8981868862002e35565b91505060ff831660408301529695505050505050565b6000835162002eb381846020880162002a2e565b83519083019062002ec981836020880162002a2e565b01949350505050565b6000808585111562002ee357600080fd5b8386111562002ef157600080fd5b5050820193919092039150565b600080600080600080600060e0888a03121562002f1a57600080fd5b873562002f27816200237f565b9650602088013562002f39816200237f565b9550604088013594506060880135935060808801356200257681620024f9565b6020808252603c908201527f506f6c79676f6e5a6b45564d4272696467653a3a5f7065726d69743a2050657260408201527f6d6974206f776e6572206d757374206265207468652073656e64657200000000606082015260800190565b60208082526033908201527f506f6c79676f6e5a6b45564d4272696467653a3a5f7065726d69743a205370656040820152726e646572206d7573742062652027746869732760681b606082015260800190565b80151581146200239557600080fd5b600080600080600080600080610100898b0312156200303657600080fd5b883562003043816200237f565b9750602089013562003055816200237f565b965060408901359550606089013594506080890135620030758162003009565b935060a08901356200308781620024f9565b979a969950949793969295929450505060c08201359160e0013590565b600181815b80851115620030e5578160001904821115620030c957620030c962002c8c565b80851615620030d757918102915b93841c9390800290620030a9565b509250929050565b600082620030fe5750600162000a55565b816200310d5750600062000a55565b8160018114620031265760028114620031315762003151565b600191505062000a55565b60ff84111562003145576200314562002c8c565b50506001821b62000a55565b5060208310610133831016604e8410600b841016171562003176575081810a62000a55565b620031828383620030a4565b806000190482111562003199576200319962002c8c565b029392505050565b6000620024f28383620030ed565b600082821015620031c457620031c462002c8c565b500390565b60008219821115620031df57620031df62002c8c565b500190565b634e487b7160e01b600052600160045260246000fd5b6000602082840312156200320d57600080fd5b5051919050565b6000602082840312156200322757600080fd5b8151620024f28162003009565b602081526000620024f2602083018462002b0156fe60c06040523480156200001157600080fd5b5060405162001542380380620015428339810160408190526200003491620002ad565b82826003620000448382620003c1565b506004620000538282620003c1565b5050600580546001600160a81b0319163360ff60a01b191617600160a01b60ff851602179055504660808190526200008b9062000098565b60a052506200048d915050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f620000c562000146565b805160209182012060408051808201825260018152603160f81b90840152805192830193909352918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060820152608081018390523060a082015260c001604051602081830303815290604052805190602001209050919050565b606060038054620001579062000332565b80601f0160208091040260200160405190810160405280929190818152602001828054620001859062000332565b8015620001d65780601f10620001aa57610100808354040283529160200191620001d6565b820191906000526020600020905b815481529060010190602001808311620001b857829003601f168201915b5050505050905090565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200020857600080fd5b81516001600160401b0380821115620002255762000225620001e0565b604051601f8301601f19908116603f01168101908282118183101715620002505762000250620001e0565b816040528381526020925086838588010111156200026d57600080fd5b600091505b8382101562000291578582018301518183018401529082019062000272565b83821115620002a35760008385830101525b9695505050505050565b600080600060608486031215620002c357600080fd5b83516001600160401b0380821115620002db57600080fd5b620002e987838801620001f6565b945060208601519150808211156200030057600080fd5b506200030f86828701620001f6565b925050604084015160ff811681146200032757600080fd5b809150509250925092565b600181811c908216806200034757607f821691505b6020821081036200036857634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620003bc57600081815260208120601f850160051c81016020861015620003975750805b601f850160051c820191505b81811015620003b857828155600101620003a3565b5050505b505050565b81516001600160401b03811115620003dd57620003dd620001e0565b620003f581620003ee845462000332565b846200036e565b602080601f8311600181146200042d5760008415620004145750858301515b600019600386901b1c1916600185901b178555620003b8565b600085815260208120601f198616915b828110156200045e578886015182559484019460019091019084016200043d565b50858210156200047d5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60805160a051611088620004ba60003960006104690152600081816102f9015261043301526110886000f3fe608060405234801561001057600080fd5b50600436106101375760003560e01c806370a08231116100b8578063a457c2d71161007c578063a457c2d7146102ce578063a9059cbb146102e1578063cd0d0096146102f4578063d505accf1461031b578063dd62ed3e1461032e578063ffa1ad741461034157600080fd5b806370a082311461023f5780637ecebe001461026857806395d89b41146102885780639dc29fac14610290578063a3c573eb146102a357600080fd5b806330adf81f116100ff57806330adf81f146101c9578063313ce567146101f05780633644e5151461020f578063395093511461021757806340c10f191461022a57600080fd5b806306fdde031461013c578063095ea7b31461015a57806318160ddd1461017d57806320606b701461018f57806323b872dd146101b6575b600080fd5b610144610361565b6040516101519190610dc2565b60405180910390f35b61016d610168366004610e33565b6103f3565b6040519015158152602001610151565b6002545b604051908152602001610151565b6101817f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81565b61016d6101c4366004610e5d565b61040b565b6101817f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b600554600160a01b900460ff1660405160ff9091168152602001610151565b61018161042f565b61016d610225366004610e33565b61048b565b61023d610238366004610e33565b6104ad565b005b61018161024d366004610e99565b6001600160a01b031660009081526020819052604090205490565b610181610276366004610e99565b60066020526000908152604090205481565b6101446104ee565b61023d61029e366004610e33565b6104fd565b6005546102b6906001600160a01b031681565b6040516001600160a01b039091168152602001610151565b61016d6102dc366004610e33565b610531565b61016d6102ef366004610e33565b6105ac565b6101817f000000000000000000000000000000000000000000000000000000000000000081565b61023d610329366004610ebb565b6105ba565b61018161033c366004610f2e565b6107f5565b610144604051806040016040528060018152602001603160f81b81525081565b60606003805461037090610f61565b80601f016020809104026020016040519081016040528092919081815260200182805461039c90610f61565b80156103e95780601f106103be576101008083540402835291602001916103e9565b820191906000526020600020905b8154815290600101906020018083116103cc57829003601f168201915b5050505050905090565b600033610401818585610820565b5060019392505050565b600033610419858285610945565b6104248585856109bf565b506001949350505050565b60007f000000000000000000000000000000000000000000000000000000000000000046146104665761046146610b51565b905090565b507f000000000000000000000000000000000000000000000000000000000000000090565b60003361040181858561049e83836107f5565b6104a89190610fb1565b610820565b6005546001600160a01b031633146104e05760405162461bcd60e51b81526004016104d790610fc9565b60405180910390fd5b6104ea8282610bfd565b5050565b60606004805461037090610f61565b6005546001600160a01b031633146105275760405162461bcd60e51b81526004016104d790610fc9565b6104ea8282610caa565b6000338161053f82866107f5565b90508381101561059f5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016104d7565b6104248286868403610820565b6000336104018185856109bf565b834211156106165760405162461bcd60e51b8152602060048201526024808201527f546f6b656e577261707065643a3a7065726d69743a20457870697265642070656044820152631c9b5a5d60e21b60648201526084016104d7565b6001600160a01b038716600090815260066020526040812080547f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918a918a918a91908661066383611019565b909155506040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e00160405160208183030381529060405280519060200120905060006106c161042f565b60405161190160f01b602082015260228101919091526042810183905260620160408051601f198184030181528282528051602091820120600080855291840180845281905260ff89169284019290925260608301879052608083018690529092509060019060a0016020604051602081039080840390855afa15801561074c573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116158015906107825750896001600160a01b0316816001600160a01b0316145b6107de5760405162461bcd60e51b815260206004820152602760248201527f546f6b656e577261707065643a3a7065726d69743a20496e76616c6964207369604482015266676e617475726560c81b60648201526084016104d7565b6107e98a8a8a610820565b50505050505050505050565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166108825760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016104d7565b6001600160a01b0382166108e35760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016104d7565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b600061095184846107f5565b905060001981146109b957818110156109ac5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016104d7565b6109b98484848403610820565b50505050565b6001600160a01b038316610a235760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016104d7565b6001600160a01b038216610a855760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016104d7565b6001600160a01b03831660009081526020819052604090205481811015610afd5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016104d7565b6001600160a01b0384811660008181526020818152604080832087870390559387168083529184902080548701905592518581529092600080516020611033833981519152910160405180910390a36109b9565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f610b7c610361565b805160209182012060408051808201825260018152603160f81b90840152805192830193909352918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060820152608081018390523060a082015260c001604051602081830303815290604052805190602001209050919050565b6001600160a01b038216610c535760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016104d7565b8060026000828254610c659190610fb1565b90915550506001600160a01b03821660008181526020818152604080832080548601905551848152600080516020611033833981519152910160405180910390a35050565b6001600160a01b038216610d0a5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016104d7565b6001600160a01b03821660009081526020819052604090205481811015610d7e5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016104d7565b6001600160a01b0383166000818152602081815260408083208686039055600280548790039055518581529192916000805160206110338339815191529101610938565b600060208083528351808285015260005b81811015610def57858101830151858201604001528201610dd3565b81811115610e01576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b0381168114610e2e57600080fd5b919050565b60008060408385031215610e4657600080fd5b610e4f83610e17565b946020939093013593505050565b600080600060608486031215610e7257600080fd5b610e7b84610e17565b9250610e8960208501610e17565b9150604084013590509250925092565b600060208284031215610eab57600080fd5b610eb482610e17565b9392505050565b600080600080600080600060e0888a031215610ed657600080fd5b610edf88610e17565b9650610eed60208901610e17565b95506040880135945060608801359350608088013560ff81168114610f1157600080fd5b9699959850939692959460a0840135945060c09093013592915050565b60008060408385031215610f4157600080fd5b610f4a83610e17565b9150610f5860208401610e17565b90509250929050565b600181811c90821680610f7557607f821691505b602082108103610f9557634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60008219821115610fc457610fc4610f9b565b500190565b60208082526030908201527f546f6b656e577261707065643a3a6f6e6c794272696467653a204e6f7420506f60408201526f6c79676f6e5a6b45564d42726964676560801b606082015260800190565b60006001820161102b5761102b610f9b565b506001019056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212208b7986f78e961ad6c0885b86b24ce427045be98073c1f3d7fe18180542ab873564736f6c634300080f0033506f6c79676f6e5a6b45564d4272696467653a3a5f7665726966794c6561663aa2646970667358221220e0b778446dfafc83b884a9ef451c3d45b125c75e14872821387cc665ff69f11664736f6c634300080f0033", + "deployedBytecode": "0x608060405260043610620001675760003560e01c80637b6323c111620000c5578063d02103ca1162000078578063d02103ca146200047d578063d96a15f7146200049f578063dbc1697614620004b6578063ed6be5c914620004ce578063ee25560b14620004e5578063ff634ed7146200051657600080fd5b80637b6323c1146200037057806381b1c17414620003955780639e34070f14620003cf578063a08e8a0814620003f4578063aaa13cc2146200041e578063bab161bf146200044357600080fd5b806334ac9cf2116200011e57806334ac9cf214620002a25780633ae0504714620002c45780633e19704314620002dc578063463855491462000301578063647c576c14620003265780637524b838146200034b57600080fd5b80630871e971146200016c57806315064c9614620001855780632072f6c514620001b657806322e95f2c14620001ce5780632dfdf0b5146200020c578063318aee3d1462000233575b600080fd5b620001836200017d3660046200240a565b6200052d565b005b3480156200019257600080fd5b50602254620001a19060ff1681565b60405190151581526020015b60405180910390f35b348015620001c357600080fd5b5062000183620009cf565b348015620001db57600080fd5b50620001f3620001ed36600462002496565b62000a08565b6040516001600160a01b039091168152602001620001ad565b3480156200021957600080fd5b506200022460215481565b604051908152602001620001ad565b3480156200024057600080fd5b506200027d62000252366004620024d2565b60256020526000908152604090205463ffffffff81169064010000000090046001600160a01b031682565b6040805163ffffffff90931683526001600160a01b03909116602083015201620001ad565b348015620002af57600080fd5b50602754620001f3906001600160a01b031681565b348015620002d157600080fd5b506200022462000a5b565b348015620002e957600080fd5b5062000224620002fb36600462002509565b62000b4e565b3480156200030e57600080fd5b506200018362000320366004620026df565b62000bdb565b3480156200033357600080fd5b506200018362000345366004620027c5565b62000d81565b3480156200035857600080fd5b50620001a16200036a36600462002815565b62000ee0565b3480156200037d57600080fd5b50620001836200038f366004620026df565b62000fde565b348015620003a257600080fd5b50620001f3620003b436600462002879565b6024602052600090815260409020546001600160a01b031681565b348015620003dc57600080fd5b50620001a1620003ee36600462002879565b62001447565b3480156200040157600080fd5b506200040b600081565b60405160ff9091168152602001620001ad565b3480156200042b57600080fd5b50620001f36200043d36600462002893565b6200148c565b3480156200045057600080fd5b506022546200046790610100900463ffffffff1681565b60405163ffffffff9091168152602001620001ad565b3480156200048a57600080fd5b50602654620001f3906001600160a01b031681565b62000183620004b036600462002946565b620015a3565b348015620004c357600080fd5b50620001836200174f565b348015620004db57600080fd5b5062000467600081565b348015620004f257600080fd5b50620002246200050436600462002879565b60236020526000908152604090205481565b3480156200052357600080fd5b506200040b600181565b60225460ff16156200055c5760405162461bcd60e51b81526004016200055390620029ad565b60405180910390fd5b60225463ffffffff610100909104811690861603620005e45760405162461bcd60e51b815260206004820152603d60248201527f506f6c79676f6e5a6b45564d4272696467653a3a62726964676541737365743a60448201527f2044657374696e6174696f6e2063616e6e6f7420626520697473656c66000000606482015260840162000553565b60008060606001600160a01b03891662000687578534146200067d5760405162461bcd60e51b8152602060048201526044602482018190527f506f6c79676f6e5a6b45564d4272696467653a3a62726964676541737365743a908201527f20416d6f756e7420646f6573206e6f74206d61746368206d6573736167652e76606482015263616c756560e01b608482015260a40162000553565b60009150620008e9565b6001600160a01b03808a1660009081526025602090815260409182902082518084019093525463ffffffff81168352640100000000900490921691810182905290156200074657604051632770a7eb60e21b81526001600160a01b038b1690639dc29fac90620006fe9033908b9060040162002a15565b600060405180830381600087803b1580156200071957600080fd5b505af11580156200072e573d6000803e3d6000fd5b505050508060200151935080600001519250620008e7565b84156200075b576200075b8a88888862001786565b620007726001600160a01b038b1633308a62001baa565b899350602260019054906101000a900463ffffffff169250896001600160a01b03166306fdde036040518163ffffffff1660e01b8152600401600060405180830381865afa158015620007c9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620007f3919081019062002aa9565b8a6001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa15801562000832573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200085c919081019062002aa9565b8b6001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200089b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620008c1919062002ae1565b604051602001620008d59392919062002b2f565b60405160208183030381529060405291505b505b7f501781209a1f8899323b96b4ef08b168df93e0a90c673d1e4cce39366cb62f9b600083858b8b8b876021546040516200092b98979695949392919062002b6c565b60405180910390a16200095662000950600084868c8c8c888051906020012062000b4e565b62001c17565b6026546001600160a01b03166333d6247d6200097162000a5b565b6040518263ffffffff1660e01b81526004016200099091815260200190565b600060405180830381600087803b158015620009ab57600080fd5b505af1158015620009c0573d6000803e3d6000fd5b50505050505050505050505050565b6027546001600160a01b03163314620009fc5760405162461bcd60e51b8152600401620005539062002bd9565b62000a0662001d68565b565b600060246000848460405160200162000a2392919062002c36565b60408051601f19818403018152918152815160209283012083529082019290925201600020546001600160a01b031690505b92915050565b602154600090819081805b602081101562000b45578260011660010362000ac6576001816020811062000a925762000a9262002c60565b0154604080516020810192909252810185905260600160405160208183030381529060405280519060200120935062000af3565b60408051602081018690529081018390526060016040516020818303038152906040528051906020012093505b62000b0060028462002ca2565b6040805160208101859052908101849052909350606001604051602081830303815290604052805190602001209150808062000b3c9062002cb9565b91505062000a66565b50919392505050565b6040516001600160f81b031960f889901b1660208201526001600160e01b031960e088811b821660218401526001600160601b0319606089811b821660258601529188901b909216603984015285901b16603d8201526051810183905260718101829052600090609101604051602081830303815290604052805190602001209050979650505050505050565b60225460ff161562000c015760405162461bcd60e51b81526004016200055390620029ad565b62000c178a8a8a8a8a8a8a8a8a8a600162001dc6565b62000c288963ffffffff166200204b565b6000836001600160a01b03168387898560405160240162000c4c9392919062002cd5565b60408051601f198184030181529181526020820180516001600160e01b0316630c035af960e11b1790525162000c83919062002d10565b60006040518083038185875af1925050503d806000811462000cc2576040519150601f19603f3d011682016040523d82523d6000602084013e62000cc7565b606091505b505090508062000d335760405162461bcd60e51b815260206004820152603060248201527f506f6c79676f6e5a6b45564d4272696467653a3a636c61696d4d65737361676560448201526f0e8813595cdcd859d94819985a5b195960821b606482015260840162000553565b7f25308c93ceeed162da955b3f7ce3e3f93606579e40fb92029faa9efe275459838a8888878760405162000d6c95949392919062002d2e565b60405180910390a15050505050505050505050565b600054610100900460ff161580801562000da25750600054600160ff909116105b8062000dbe5750303b15801562000dbe575060005460ff166001145b62000e235760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840162000553565b6000805460ff19166001179055801562000e47576000805461ff0019166101001790555b6022805463ffffffff86166101000264ffffffff0019909116179055602680546001600160a01b038086166001600160a01b0319928316179092556027805492851692909116919091179055801562000eda576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b60008463ffffffff8416825b602081101562000fcf578160011660010362000f595786818151811062000f175762000f1762002c60565b60200260200101518360405160200162000f3b929190918252602082015260400190565b60405160208183030381529060405280519060200120925062000fab565b8287828151811062000f6f5762000f6f62002c60565b602002602001015160405160200162000f92929190918252602082015260400190565b6040516020818303038152906040528051906020012092505b62000fb860028362002ca2565b91508062000fc68162002cb9565b91505062000eec565b5050821490505b949350505050565b60225460ff1615620010045760405162461bcd60e51b81526004016200055390620029ad565b6200101a8a8a8a8a8a8a8a8a8a8a600062001dc6565b6200102b8963ffffffff166200204b565b6001600160a01b0385166200112257604080516000808252602082019092526001600160a01b03851690849060405162001066919062002d10565b60006040518083038185875af1925050503d8060008114620010a5576040519150601f19603f3d011682016040523d82523d6000602084013e620010aa565b606091505b50509050806200111b5760405162461bcd60e51b815260206004820152603560248201527f506f6c79676f6e5a6b45564d4272696467653a3a636c61696d41737365743a20604482015274115d1a195c881d1c985b9cd9995c8819985a5b1959605a1b606482015260840162000553565b50620013fa565b60225463ffffffff6101009091048116908716036200115757620011516001600160a01b03861684846200208d565b620013fa565b600086866040516020016200116e92919062002c36565b60408051601f198184030181529181528151602092830120600081815260249093529120549091506001600160a01b0316806200139257600080600085806020019051810190620011c0919062002d65565b925092509250600085848484604051620011da9062002371565b620011e89392919062002b2f565b8190604051809103906000f590508015801562001209573d6000803e3d6000fd5b506040516340c10f1960e01b81529091506001600160a01b038216906340c10f19906200123d908c908c9060040162002a15565b600060405180830381600087803b1580156200125857600080fd5b505af11580156200126d573d6000803e3d6000fd5b50505050806024600088815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060405180604001604052808d63ffffffff1681526020018c6001600160a01b031681525060256000836001600160a01b03166001600160a01b0316815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a8154816001600160a01b0302191690836001600160a01b031602179055509050507f490e59a1701b938786ac72570a1efeac994a3dbe96e2e883e19e902ace6e6a398c8c838a60405162001380949392919062002dda565b60405180910390a150505050620013f7565b6040516340c10f1960e01b81526001600160a01b038216906340c10f1990620013c2908890889060040162002a15565b600060405180830381600087803b158015620013dd57600080fd5b505af1158015620013f2573d6000803e3d6000fd5b505050505b50505b7f25308c93ceeed162da955b3f7ce3e3f93606579e40fb92029faa9efe2754598389878786866040516200143395949392919062002d2e565b60405180910390a150505050505050505050565b600080620014586101008462002ca2565b905060006200146a6101008562002e1e565b60009283526023602052604090922054600190921b9182169091149392505050565b6000808888604051602001620014a492919062002c36565b604051602081830303815290604052805190602001209050600060ff60f81b308360405180602001620014d79062002371565b601f1982820381018352601f90910116604081905262001504908d908d908d908d908d9060200162002e5e565b60408051601f198184030181529082905262001524929160200162002e9f565b604051602081830303815290604052805190602001206040516020016200157d94939291906001600160f81b031994909416845260609290921b6001600160601b03191660018401526015830152603582015260550190565b60408051808303601f1901815291905280516020909101209a9950505050505050505050565b60225460ff1615620015c95760405162461bcd60e51b81526004016200055390620029ad565b60225463ffffffff610100909104811690841603620016515760405162461bcd60e51b815260206004820152603f60248201527f506f6c79676f6e5a6b45564d4272696467653a3a6272696467654d657373616760448201527f653a2044657374696e6174696f6e2063616e6e6f7420626520697473656c6600606482015260840162000553565b7f501781209a1f8899323b96b4ef08b168df93e0a90c673d1e4cce39366cb62f9b6001602260019054906101000a900463ffffffff163386863487602154604051620016a598979695949392919062002b6c565b60405180910390a1620016dc620009506001602260019054906101000a900463ffffffff1633878734888051906020012062000b4e565b6026546001600160a01b03166333d6247d620016f762000a5b565b6040518263ffffffff1660e01b81526004016200171691815260200190565b600060405180830381600087803b1580156200173157600080fd5b505af115801562001746573d6000803e3d6000fd5b50505050505050565b6027546001600160a01b031633146200177c5760405162461bcd60e51b8152600401620005539062002bd9565b62000a06620020af565b6000620017c983838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506200215e92505050565b9050632afa533160e01b6001600160e01b0319821601620019be576000808080808080620017fb896004818d62002ed2565b8101906200180a919062002efe565b9650965096509650965096509650336001600160a01b0316876001600160a01b0316146200184c5760405162461bcd60e51b8152600401620005539062002f59565b6001600160a01b0386163014620018775760405162461bcd60e51b8152600401620005539062002fb6565b8a8514620018ea5760405162461bcd60e51b815260206004820152603960248201527f506f6c79676f6e5a6b45564d4272696467653a3a5f7065726d69743a205065726044820152780dad2e840c2dadeeadce840c8decae640dcdee840dac2e8c6d603b1b606482015260840162000553565b604080516001600160a01b0389811660248301528881166044830152606482018890526084820187905260ff861660a483015260c4820185905260e48083018590528351808403909101815261010490920183526020820180516001600160e01b031663d505accf60e01b1790529151918e16916200196a919062002d10565b6000604051808303816000865af19150503d8060008114620019a9576040519150601f19603f3d011682016040523d82523d6000602084013e620019ae565b606091505b5050505050505050505062001ba3565b6001600160e01b031981166323f2ebc360e21b1462001a345760405162461bcd60e51b815260206004820152602b60248201527f506f6c79676f6e5a6b45564d4272696467653a3a5f7065726d69743a204e6f7460448201526a081d985b1a590818d85b1b60aa1b606482015260840162000553565b60008080808080808062001a4c8a6004818e62002ed2565b81019062001a5b919062003018565b97509750975097509750975097509750336001600160a01b0316886001600160a01b03161462001a9f5760405162461bcd60e51b8152600401620005539062002f59565b6001600160a01b038716301462001aca5760405162461bcd60e51b8152600401620005539062002fb6565b604080516001600160a01b038a811660248301528981166044830152606482018990526084820188905286151560a483015260ff861660c483015260e482018590526101048083018590528351808403909101815261012490920183526020820180516001600160e01b03166323f2ebc360e21b1790529151918f169162001b53919062002d10565b6000604051808303816000865af19150503d806000811462001b92576040519150601f19603f3d011682016040523d82523d6000602084013e62001b97565b606091505b50505050505050505050505b5050505050565b6040516001600160a01b038085166024830152831660448201526064810182905262000eda9085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915262002165565b80600162001c2860206002620031a1565b62001c349190620031af565b6021541062001c995760405162461bcd60e51b815260206004820152602a60248201527f4465706f736974436f6e74726163743a5f6465706f7369743a204d65726b6c65604482015269081d1c995948199d5b1b60b21b606482015260840162000553565b60016021600082825462001cae9190620031c9565b909155505060215460005b602081101562001d58578160011660010362001cee57826001826020811062001ce65762001ce662002c60565b015550505050565b6001816020811062001d045762001d0462002c60565b0154604080516020810192909252810184905260600160405160208183030381529060405280519060200120925060028262001d41919062002ca2565b91508062001d4f8162002cb9565b91505062001cb9565b5062001d63620031e4565b505050565b60225460ff161562001d8e5760405162461bcd60e51b81526004016200055390620029ad565b6022805460ff191660011790556040517f2261efe5aef6fedc1fd1550b25facc9181745623049c7901287030b9ad1a549790600090a1565b62001dd78a63ffffffff1662001447565b1562001e2e5760405162461bcd60e51b815260206004820152603060248201526000805160206200478c83398151915260448201526f08105b1c9958591e4818db185a5b595960821b606482015260840162000553565b6026546040805160208082018d90528183018c9052825180830384018152606083019384905280519101206312bd9b1960e11b90925260648101919091526000916001600160a01b03169063257b3632906084016020604051808303816000875af115801562001ea2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001ec89190620031fa565b90508060000362001f2b5760405162461bcd60e51b815260206004820152603760248201526000805160206200478c8339815191526044820152760811db1bd8985b115e1a5d149bdbdd081a5b9d985b1a59604a1b606482015260840162000553565b60225463ffffffff878116610100909204161462001fad5760405162461bcd60e51b815260206004820152604360248201526000805160206200478c83398151915260448201527f2044657374696e6174696f6e206e6574776f726b20646f6573206e6f74206d616064820152620e8c6d60eb1b608482015260a40162000553565b602254600090610100900463ffffffff1662001fcb57508862001fce565b50895b62001ff362001fea848b8b8b8b8b8b8051906020012062000b4e565b8e8e8462000ee0565b620009c05760405162461bcd60e51b815260206004820152603260248201526000805160206200478c8339815191526044820152711024b73b30b634b21039b6ba10383937b7b360711b606482015260840162000553565b60006200205b6101008362002ca2565b905060006200206d6101008462002e1e565b6000928352602360205260409092208054600190931b9092179091555050565b62001d638363a9059cbb60e01b848460405160240162001bdf92919062002a15565b60225460ff16620021295760405162461bcd60e51b815260206004820152603b60248201527f456d657267656e63794d616e616765723a3a6966456d657267656e637953746160448201527f74653a206f6e6c7920696620656d657267656e63792073746174650000000000606482015260840162000553565b6022805460ff191690556040517f1e5e34eea33501aecf2ebec9fe0e884a40804275ea7fe10b2ba084c8374308b390600090a1565b6020015190565b6000620021bc826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166200223e9092919063ffffffff16565b80519091501562001d635780806020019051810190620021dd919062003214565b62001d635760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840162000553565b606062000fd6848460008585600080866001600160a01b0316858760405162002268919062002d10565b60006040518083038185875af1925050503d8060008114620022a7576040519150601f19603f3d011682016040523d82523d6000602084013e620022ac565b606091505b5091509150620022bf87838387620022ca565b979650505050505050565b606083156200233e57825160000362002336576001600160a01b0385163b620023365760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640162000553565b508162000fd6565b62000fd68383815115620023555781518083602001fd5b8060405162461bcd60e51b815260040162000553919062003234565b611542806200324a83390190565b6001600160a01b03811681146200239557600080fd5b50565b8035620023a5816200237f565b919050565b803563ffffffff81168114620023a557600080fd5b60008083601f840112620023d257600080fd5b5081356001600160401b03811115620023ea57600080fd5b6020830191508360208285010111156200240357600080fd5b9250929050565b60008060008060008060a087890312156200242457600080fd5b863562002431816200237f565b95506200244160208801620023aa565b9450604087013562002453816200237f565b93506060870135925060808701356001600160401b038111156200247657600080fd5b6200248489828a01620023bf565b979a9699509497509295939492505050565b60008060408385031215620024aa57600080fd5b620024b583620023aa565b91506020830135620024c7816200237f565b809150509250929050565b600060208284031215620024e557600080fd5b8135620024f2816200237f565b9392505050565b60ff811681146200239557600080fd5b600080600080600080600060e0888a0312156200252557600080fd5b87356200253281620024f9565b96506200254260208901620023aa565b9550604088013562002554816200237f565b94506200256460608901620023aa565b9350608088013562002576816200237f565b9699959850939692959460a0840135945060c09093013592915050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715620025d457620025d462002593565b604052919050565b600082601f830112620025ee57600080fd5b813560206001600160401b038211156200260c576200260c62002593565b8160051b6200261d828201620025a9565b92835284810182019282810190878511156200263857600080fd5b83870192505b84831015620022bf578235825291830191908301906200263e565b60006001600160401b0382111562002675576200267562002593565b50601f01601f191660200190565b600082601f8301126200269557600080fd5b8135620026ac620026a68262002659565b620025a9565b818152846020838601011115620026c257600080fd5b816020850160208301376000918101602001919091529392505050565b6000806000806000806000806000806101408b8d0312156200270057600080fd5b8a356001600160401b03808211156200271857600080fd5b620027268e838f01620025dc565b9b506200273660208e01620023aa565b9a5060408d0135995060608d013598506200275460808e01620023aa565b97506200276460a08e0162002398565b96506200277460c08e01620023aa565b95506200278460e08e0162002398565b94506101008d013593506101208d0135915080821115620027a457600080fd5b50620027b38d828e0162002683565b9150509295989b9194979a5092959850565b600080600060608486031215620027db57600080fd5b620027e684620023aa565b92506020840135620027f8816200237f565b915060408401356200280a816200237f565b809150509250925092565b600080600080608085870312156200282c57600080fd5b8435935060208501356001600160401b038111156200284a57600080fd5b6200285887828801620025dc565b9350506200286960408601620023aa565b9396929550929360600135925050565b6000602082840312156200288c57600080fd5b5035919050565b600080600080600080600060a0888a031215620028af57600080fd5b620028ba88620023aa565b96506020880135620028cc816200237f565b955060408801356001600160401b0380821115620028e957600080fd5b620028f78b838c01620023bf565b909750955060608a01359150808211156200291157600080fd5b50620029208a828b01620023bf565b90945092505060808801356200293681620024f9565b8091505092959891949750929550565b6000806000606084860312156200295c57600080fd5b6200296784620023aa565b9250602084013562002979816200237f565b915060408401356001600160401b038111156200299557600080fd5b620029a38682870162002683565b9150509250925092565b60208082526042908201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960408201527f53746174653a206f6e6c79206966206e6f7420656d657267656e637920737461606082015261746560f01b608082015260a00190565b6001600160a01b03929092168252602082015260400190565b60005b8381101562002a4b57818101518382015260200162002a31565b8381111562000eda5750506000910152565b600082601f83011262002a6f57600080fd5b815162002a80620026a68262002659565b81815284602083860101111562002a9657600080fd5b62000fd682602083016020870162002a2e565b60006020828403121562002abc57600080fd5b81516001600160401b0381111562002ad357600080fd5b62000fd68482850162002a5d565b60006020828403121562002af457600080fd5b8151620024f281620024f9565b6000815180845262002b1b81602086016020860162002a2e565b601f01601f19169290920160200192915050565b60608152600062002b44606083018662002b01565b828103602084015262002b58818662002b01565b91505060ff83166040830152949350505050565b60ff8916815263ffffffff88811660208301526001600160a01b03888116604084015287821660608401528616608083015260a0820185905261010060c0830181905260009162002bc08483018762002b01565b925080851660e085015250509998505050505050505050565b6020808252603a908201527f506f6c79676f6e5a6b45564d3a3a6f6e6c79506f6c79676f6e5a6b45564d3a2060408201527f6f6e6c7920506f6c79676f6e5a6b45564d20636f6e7472616374000000000000606082015260800190565b60e09290921b6001600160e01b031916825260601b6001600160601b031916600482015260180190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60008262002cb45762002cb462002c76565b500490565b60006001820162002cce5762002cce62002c8c565b5060010190565b6001600160a01b038416815263ffffffff8316602082015260606040820181905260009062002d079083018462002b01565b95945050505050565b6000825162002d2481846020870162002a2e565b9190910192915050565b63ffffffff95861681529390941660208401526001600160a01b039182166040840152166060820152608081019190915260a00190565b60008060006060848603121562002d7b57600080fd5b83516001600160401b038082111562002d9357600080fd5b62002da18783880162002a5d565b9450602086015191508082111562002db857600080fd5b5062002dc78682870162002a5d565b92505060408401516200280a81620024f9565b63ffffffff851681526001600160a01b0384811660208301528316604082015260806060820181905260009062002e149083018462002b01565b9695505050505050565b60008262002e305762002e3062002c76565b500690565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60608152600062002e7460608301878962002e35565b828103602084015262002e8981868862002e35565b91505060ff831660408301529695505050505050565b6000835162002eb381846020880162002a2e565b83519083019062002ec981836020880162002a2e565b01949350505050565b6000808585111562002ee357600080fd5b8386111562002ef157600080fd5b5050820193919092039150565b600080600080600080600060e0888a03121562002f1a57600080fd5b873562002f27816200237f565b9650602088013562002f39816200237f565b9550604088013594506060880135935060808801356200257681620024f9565b6020808252603c908201527f506f6c79676f6e5a6b45564d4272696467653a3a5f7065726d69743a2050657260408201527f6d6974206f776e6572206d757374206265207468652073656e64657200000000606082015260800190565b60208082526033908201527f506f6c79676f6e5a6b45564d4272696467653a3a5f7065726d69743a205370656040820152726e646572206d7573742062652027746869732760681b606082015260800190565b80151581146200239557600080fd5b600080600080600080600080610100898b0312156200303657600080fd5b883562003043816200237f565b9750602089013562003055816200237f565b965060408901359550606089013594506080890135620030758162003009565b935060a08901356200308781620024f9565b979a969950949793969295929450505060c08201359160e0013590565b600181815b80851115620030e5578160001904821115620030c957620030c962002c8c565b80851615620030d757918102915b93841c9390800290620030a9565b509250929050565b600082620030fe5750600162000a55565b816200310d5750600062000a55565b8160018114620031265760028114620031315762003151565b600191505062000a55565b60ff84111562003145576200314562002c8c565b50506001821b62000a55565b5060208310610133831016604e8410600b841016171562003176575081810a62000a55565b620031828383620030a4565b806000190482111562003199576200319962002c8c565b029392505050565b6000620024f28383620030ed565b600082821015620031c457620031c462002c8c565b500390565b60008219821115620031df57620031df62002c8c565b500190565b634e487b7160e01b600052600160045260246000fd5b6000602082840312156200320d57600080fd5b5051919050565b6000602082840312156200322757600080fd5b8151620024f28162003009565b602081526000620024f2602083018462002b0156fe60c06040523480156200001157600080fd5b5060405162001542380380620015428339810160408190526200003491620002ad565b82826003620000448382620003c1565b506004620000538282620003c1565b5050600580546001600160a81b0319163360ff60a01b191617600160a01b60ff851602179055504660808190526200008b9062000098565b60a052506200048d915050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f620000c562000146565b805160209182012060408051808201825260018152603160f81b90840152805192830193909352918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060820152608081018390523060a082015260c001604051602081830303815290604052805190602001209050919050565b606060038054620001579062000332565b80601f0160208091040260200160405190810160405280929190818152602001828054620001859062000332565b8015620001d65780601f10620001aa57610100808354040283529160200191620001d6565b820191906000526020600020905b815481529060010190602001808311620001b857829003601f168201915b5050505050905090565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200020857600080fd5b81516001600160401b0380821115620002255762000225620001e0565b604051601f8301601f19908116603f01168101908282118183101715620002505762000250620001e0565b816040528381526020925086838588010111156200026d57600080fd5b600091505b8382101562000291578582018301518183018401529082019062000272565b83821115620002a35760008385830101525b9695505050505050565b600080600060608486031215620002c357600080fd5b83516001600160401b0380821115620002db57600080fd5b620002e987838801620001f6565b945060208601519150808211156200030057600080fd5b506200030f86828701620001f6565b925050604084015160ff811681146200032757600080fd5b809150509250925092565b600181811c908216806200034757607f821691505b6020821081036200036857634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620003bc57600081815260208120601f850160051c81016020861015620003975750805b601f850160051c820191505b81811015620003b857828155600101620003a3565b5050505b505050565b81516001600160401b03811115620003dd57620003dd620001e0565b620003f581620003ee845462000332565b846200036e565b602080601f8311600181146200042d5760008415620004145750858301515b600019600386901b1c1916600185901b178555620003b8565b600085815260208120601f198616915b828110156200045e578886015182559484019460019091019084016200043d565b50858210156200047d5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60805160a051611088620004ba60003960006104690152600081816102f9015261043301526110886000f3fe608060405234801561001057600080fd5b50600436106101375760003560e01c806370a08231116100b8578063a457c2d71161007c578063a457c2d7146102ce578063a9059cbb146102e1578063cd0d0096146102f4578063d505accf1461031b578063dd62ed3e1461032e578063ffa1ad741461034157600080fd5b806370a082311461023f5780637ecebe001461026857806395d89b41146102885780639dc29fac14610290578063a3c573eb146102a357600080fd5b806330adf81f116100ff57806330adf81f146101c9578063313ce567146101f05780633644e5151461020f578063395093511461021757806340c10f191461022a57600080fd5b806306fdde031461013c578063095ea7b31461015a57806318160ddd1461017d57806320606b701461018f57806323b872dd146101b6575b600080fd5b610144610361565b6040516101519190610dc2565b60405180910390f35b61016d610168366004610e33565b6103f3565b6040519015158152602001610151565b6002545b604051908152602001610151565b6101817f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81565b61016d6101c4366004610e5d565b61040b565b6101817f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b600554600160a01b900460ff1660405160ff9091168152602001610151565b61018161042f565b61016d610225366004610e33565b61048b565b61023d610238366004610e33565b6104ad565b005b61018161024d366004610e99565b6001600160a01b031660009081526020819052604090205490565b610181610276366004610e99565b60066020526000908152604090205481565b6101446104ee565b61023d61029e366004610e33565b6104fd565b6005546102b6906001600160a01b031681565b6040516001600160a01b039091168152602001610151565b61016d6102dc366004610e33565b610531565b61016d6102ef366004610e33565b6105ac565b6101817f000000000000000000000000000000000000000000000000000000000000000081565b61023d610329366004610ebb565b6105ba565b61018161033c366004610f2e565b6107f5565b610144604051806040016040528060018152602001603160f81b81525081565b60606003805461037090610f61565b80601f016020809104026020016040519081016040528092919081815260200182805461039c90610f61565b80156103e95780601f106103be576101008083540402835291602001916103e9565b820191906000526020600020905b8154815290600101906020018083116103cc57829003601f168201915b5050505050905090565b600033610401818585610820565b5060019392505050565b600033610419858285610945565b6104248585856109bf565b506001949350505050565b60007f000000000000000000000000000000000000000000000000000000000000000046146104665761046146610b51565b905090565b507f000000000000000000000000000000000000000000000000000000000000000090565b60003361040181858561049e83836107f5565b6104a89190610fb1565b610820565b6005546001600160a01b031633146104e05760405162461bcd60e51b81526004016104d790610fc9565b60405180910390fd5b6104ea8282610bfd565b5050565b60606004805461037090610f61565b6005546001600160a01b031633146105275760405162461bcd60e51b81526004016104d790610fc9565b6104ea8282610caa565b6000338161053f82866107f5565b90508381101561059f5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016104d7565b6104248286868403610820565b6000336104018185856109bf565b834211156106165760405162461bcd60e51b8152602060048201526024808201527f546f6b656e577261707065643a3a7065726d69743a20457870697265642070656044820152631c9b5a5d60e21b60648201526084016104d7565b6001600160a01b038716600090815260066020526040812080547f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918a918a918a91908661066383611019565b909155506040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e00160405160208183030381529060405280519060200120905060006106c161042f565b60405161190160f01b602082015260228101919091526042810183905260620160408051601f198184030181528282528051602091820120600080855291840180845281905260ff89169284019290925260608301879052608083018690529092509060019060a0016020604051602081039080840390855afa15801561074c573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116158015906107825750896001600160a01b0316816001600160a01b0316145b6107de5760405162461bcd60e51b815260206004820152602760248201527f546f6b656e577261707065643a3a7065726d69743a20496e76616c6964207369604482015266676e617475726560c81b60648201526084016104d7565b6107e98a8a8a610820565b50505050505050505050565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166108825760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016104d7565b6001600160a01b0382166108e35760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016104d7565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b600061095184846107f5565b905060001981146109b957818110156109ac5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016104d7565b6109b98484848403610820565b50505050565b6001600160a01b038316610a235760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016104d7565b6001600160a01b038216610a855760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016104d7565b6001600160a01b03831660009081526020819052604090205481811015610afd5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016104d7565b6001600160a01b0384811660008181526020818152604080832087870390559387168083529184902080548701905592518581529092600080516020611033833981519152910160405180910390a36109b9565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f610b7c610361565b805160209182012060408051808201825260018152603160f81b90840152805192830193909352918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060820152608081018390523060a082015260c001604051602081830303815290604052805190602001209050919050565b6001600160a01b038216610c535760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016104d7565b8060026000828254610c659190610fb1565b90915550506001600160a01b03821660008181526020818152604080832080548601905551848152600080516020611033833981519152910160405180910390a35050565b6001600160a01b038216610d0a5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016104d7565b6001600160a01b03821660009081526020819052604090205481811015610d7e5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016104d7565b6001600160a01b0383166000818152602081815260408083208686039055600280548790039055518581529192916000805160206110338339815191529101610938565b600060208083528351808285015260005b81811015610def57858101830151858201604001528201610dd3565b81811115610e01576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b0381168114610e2e57600080fd5b919050565b60008060408385031215610e4657600080fd5b610e4f83610e17565b946020939093013593505050565b600080600060608486031215610e7257600080fd5b610e7b84610e17565b9250610e8960208501610e17565b9150604084013590509250925092565b600060208284031215610eab57600080fd5b610eb482610e17565b9392505050565b600080600080600080600060e0888a031215610ed657600080fd5b610edf88610e17565b9650610eed60208901610e17565b95506040880135945060608801359350608088013560ff81168114610f1157600080fd5b9699959850939692959460a0840135945060c09093013592915050565b60008060408385031215610f4157600080fd5b610f4a83610e17565b9150610f5860208401610e17565b90509250929050565b600181811c90821680610f7557607f821691505b602082108103610f9557634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60008219821115610fc457610fc4610f9b565b500190565b60208082526030908201527f546f6b656e577261707065643a3a6f6e6c794272696467653a204e6f7420506f60408201526f6c79676f6e5a6b45564d42726964676560801b606082015260800190565b60006001820161102b5761102b610f9b565b506001019056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212208b7986f78e961ad6c0885b86b24ce427045be98073c1f3d7fe18180542ab873564736f6c634300080f0033506f6c79676f6e5a6b45564d4272696467653a3a5f7665726966794c6561663aa2646970667358221220e0b778446dfafc83b884a9ef451c3d45b125c75e14872821387cc665ff69f11664736f6c634300080f0033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/compiled-contracts/PolygonZkEVMBridgeMock.json b/compiled-contracts/PolygonZkEVMBridgeMock.json index 82c35ce..2fc50f4 100644 --- a/compiled-contracts/PolygonZkEVMBridgeMock.json +++ b/compiled-contracts/PolygonZkEVMBridgeMock.json @@ -140,6 +140,12 @@ "internalType": "address", "name": "wrappedTokenAddress", "type": "address" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "metadata", + "type": "bytes" } ], "name": "NewWrappedToken", @@ -744,9 +750,9 @@ "type": "bytes32[]" }, { - "internalType": "uint64", + "internalType": "uint32", "name": "index", - "type": "uint64" + "type": "uint32" }, { "internalType": "bytes32", @@ -790,8 +796,8 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b50614b86806100206000396000f3fe608060405260043610620001af5760003560e01c80637b6323c111620000e9578063bab161bf1162000090578063bab161bf1462000525578063d02103ca146200055f578063d96a15f71462000581578063dbc169761462000598578063ed6be5c914620005b0578063ee25560b14620005c7578063f2fde38b14620005f8578063ff634ed7146200061d57600080fd5b80637b6323c1146200041a57806381b1c174146200043f5780638da5cb5b146200047957806391e57e2d14620004995780639e34070f14620004b1578063a08e8a0814620004d6578063aaa13cc2146200050057600080fd5b8063318aee3d116200015a578063318aee3d14620002c557806334ac9cf214620003345780633ae0504714620003565780633da81682146200036e5780633e19704314620003935780634638554914620003b8578063647c576c14620003dd578063715018a6146200040257600080fd5b80630871e97114620001b457806315064c9614620001cd5780632072f6c514620001fe57806322e95f2c14620002165780632b5e42e714620002545780632c3f58cd14620002795780632dfdf0b5146200029e575b600080fd5b620001cb620001c5366004620027ac565b62000634565b005b348015620001da57600080fd5b50602254620001e99060ff1681565b60405190151581526020015b60405180910390f35b3480156200020b57600080fd5b50620001cb620006c9565b3480156200022357600080fd5b506200023b6200023536600462002838565b62000702565b6040516001600160a01b039091168152602001620001f5565b3480156200026157600080fd5b50620001cb6200027336600462002874565b62000755565b3480156200028657600080fd5b50620001cb620002983660046200288e565b62000764565b348015620002ab57600080fd5b50620002b660215481565b604051908152602001620001f5565b348015620002d257600080fd5b506200030f620002e4366004620028b3565b60256020526000908152604090205463ffffffff81169064010000000090046001600160a01b031682565b6040805163ffffffff90931683526001600160a01b03909116602083015201620001f5565b3480156200034157600080fd5b506027546200023b906001600160a01b031681565b3480156200036357600080fd5b50620002b662000790565b3480156200037b57600080fd5b50620001e96200038d36600462002999565b62000883565b348015620003a057600080fd5b50620002b6620003b236600462002a16565b62000984565b348015620003c557600080fd5b50620001cb620003d736600462002b26565b62000a11565b348015620003ea57600080fd5b50620001cb620003fc36600462002c0c565b62000bb7565b3480156200040f57600080fd5b50620001cb62000d2c565b3480156200042757600080fd5b50620001cb6200043936600462002b26565b62000d42565b3480156200044c57600080fd5b506200023b6200045e36600462002874565b6024602052600090815260409020546001600160a01b031681565b3480156200048657600080fd5b50605a546001600160a01b03166200023b565b348015620004a657600080fd5b50620002b6608c5481565b348015620004be57600080fd5b50620001e9620004d036600462002874565b620011ca565b348015620004e357600080fd5b50620004ed600081565b60405160ff9091168152602001620001f5565b3480156200050d57600080fd5b506200023b6200051f36600462002c5c565b6200120f565b3480156200053257600080fd5b506022546200054990610100900463ffffffff1681565b60405163ffffffff9091168152602001620001f5565b3480156200056c57600080fd5b506026546200023b906001600160a01b031681565b620001cb6200059236600462002d0f565b62001326565b348015620005a557600080fd5b50620001cb620014d8565b348015620005bd57600080fd5b5062000549600081565b348015620005d457600080fd5b50620002b6620005e636600462002874565b60236020526000908152604090205481565b3480156200060557600080fd5b50620001cb62000617366004620028b3565b6200150f565b3480156200062a57600080fd5b50620004ed600181565b608c54341115620006b15760405162461bcd60e51b8152602060048201526047602482015260008051602062004b3183398151915260448201527f2043616e6e6f7420627269646765206d6f7265207468616e206d6178457468656064820152667242726964676560c81b608482015260a4015b60405180910390fd5b620006c18686868686866200158e565b505050505050565b6027546001600160a01b03163314620006f65760405162461bcd60e51b8152600401620006a89062002d76565b62000700620019ff565b565b60006024600084846040516020016200071d92919062002dd3565b60408051601f19818403018152918152815160209283012083529082019290925201600020546001600160a01b031690505b92915050565b6200075f62001a5d565b608c55565b6200076e62001a5d565b6022805463ffffffff9092166101000264ffffffff0019909216919091179055565b602154600090819081805b60208110156200087a5782600116600103620007fb5760018160208110620007c757620007c762002dfd565b0154604080516020810192909252810185905260600160405160208183030381529060405280519060200120935062000828565b60408051602081018690529081018390526060016040516020818303038152906040528051906020012093505b6200083560028462002e3f565b60408051602081018590529081018490529093506060016040516020818303038152906040528051906020012091508080620008719062002e56565b9150506200079b565b50919392505050565b6000846001600160401b038416825b6020811015620009755781600116600103620008ff57868181518110620008bd57620008bd62002dfd565b602002602001015183604051602001620008e1929190918252602082015260400190565b60405160208183030381529060405280519060200120925062000951565b8287828151811062000915576200091562002dfd565b602002602001015160405160200162000938929190918252602082015260400190565b6040516020818303038152906040528051906020012092505b6200095e60028362002e3f565b9150806200096c8162002e56565b91505062000892565b5050821490505b949350505050565b6040516001600160f81b031960f889901b1660208201526001600160e01b031960e088811b821660218401526001600160601b0319606089811b821660258601529188901b909216603984015285901b16603d8201526051810183905260718101829052600090609101604051602081830303815290604052805190602001209050979650505050505050565b60225460ff161562000a375760405162461bcd60e51b8152600401620006a89062002e72565b62000a4d8a8a8a8a8a8a8a8a8a8a600162001ab9565b62000a5e8963ffffffff1662001d44565b6000836001600160a01b03168387898560405160240162000a829392919062002f37565b60408051601f198184030181529181526020820180516001600160e01b0316630c035af960e11b1790525162000ab9919062002f72565b60006040518083038185875af1925050503d806000811462000af8576040519150601f19603f3d011682016040523d82523d6000602084013e62000afd565b606091505b505090508062000b695760405162461bcd60e51b815260206004820152603060248201527f506f6c79676f6e5a6b45564d4272696467653a3a636c61696d4d65737361676560448201526f0e8813595cdcd859d94819985a5b195960821b6064820152608401620006a8565b7f25308c93ceeed162da955b3f7ce3e3f93606579e40fb92029faa9efe275459838a8888878760405162000ba295949392919062002f90565b60405180910390a15050505050505050505050565b600054610100900460ff161580801562000bd85750600054600160ff909116105b8062000bf45750303b15801562000bf4575060005460ff166001145b62000c595760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401620006a8565b6000805460ff19166001179055801562000c7d576000805461ff0019166101001790555b6022805463ffffffff86166101000264ffffffff0019909116179055602680546001600160a01b038086166001600160a01b03199283161790925560278054928516929091169190911790556703782dace9d90000608c5562000cdf62001d86565b801562000d26576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b62000d3662001a5d565b62000700600062001df9565b60225460ff161562000d685760405162461bcd60e51b8152600401620006a89062002e72565b62000d7e8a8a8a8a8a8a8a8a8a8a600062001ab9565b62000d8f8963ffffffff1662001d44565b6001600160a01b03851662000e8657604080516000808252602082019092526001600160a01b03851690849060405162000dca919062002f72565b60006040518083038185875af1925050503d806000811462000e09576040519150601f19603f3d011682016040523d82523d6000602084013e62000e0e565b606091505b505090508062000e7f5760405162461bcd60e51b815260206004820152603560248201527f506f6c79676f6e5a6b45564d4272696467653a3a636c61696d41737365743a20604482015274115d1a195c881d1c985b9cd9995c8819985a5b1959605a1b6064820152608401620006a8565b506200117d565b60225463ffffffff61010090910481169087160362000ebb5762000eb56001600160a01b038616848462001e4b565b6200117d565b6000868660405160200162000ed292919062002dd3565b60408051601f198184030181529181528151602092830120600081815260249093529120549091506001600160a01b031680620011155760008060008580602001905181019062000f24919062003013565b92509250925060008584848460405162000f3e9062002716565b62000f4c9392919062003088565b8190604051809103906000f590508015801562000f6d573d6000803e3d6000fd5b506040516340c10f1960e01b81529091506001600160a01b038216906340c10f199062000fa1908c908c90600401620030c5565b600060405180830381600087803b15801562000fbc57600080fd5b505af115801562000fd1573d6000803e3d6000fd5b50505050806024600088815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060405180604001604052808d63ffffffff1681526020018c6001600160a01b031681525060256000836001600160a01b03166001600160a01b0316815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a8154816001600160a01b0302191690836001600160a01b031602179055509050507fccd7715648d1f2bb13e158f96b5b6c3aeda555d4cb87112e274a6f28bc571d598c8c83604051620011039392919063ffffffff9390931683526001600160a01b03918216602084015216604082015260600190565b60405180910390a1505050506200117a565b6040516340c10f1960e01b81526001600160a01b038216906340c10f1990620011459088908890600401620030c5565b600060405180830381600087803b1580156200116057600080fd5b505af115801562001175573d6000803e3d6000fd5b505050505b50505b7f25308c93ceeed162da955b3f7ce3e3f93606579e40fb92029faa9efe275459838987878686604051620011b695949392919062002f90565b60405180910390a150505050505050505050565b600080620011db6101008462002e3f565b90506000620011ed61010085620030de565b60009283526023602052604090922054600190921b9182169091149392505050565b60008088886040516020016200122792919062002dd3565b604051602081830303815290604052805190602001209050600060ff60f81b3083604051806020016200125a9062002716565b601f1982820381018352601f90910116604081905262001287908d908d908d908d908d906020016200311e565b60408051601f1981840301815290829052620012a792916020016200315f565b604051602081830303815290604052805190602001206040516020016200130094939291906001600160f81b031994909416845260609290921b6001600160601b03191660018401526015830152603582015260550190565b60408051808303601f1901815291905280516020909101209a9950505050505050505050565b60225460ff16156200134c5760405162461bcd60e51b8152600401620006a89062002e72565b60225463ffffffff610100909104811690841603620013d45760405162461bcd60e51b815260206004820152603f60248201527f506f6c79676f6e5a6b45564d4272696467653a3a6272696467654d657373616760448201527f653a2044657374696e6174696f6e2063616e6e6f7420626520697473656c66006064820152608401620006a8565b7f501781209a1f8899323b96b4ef08b168df93e0a90c673d1e4cce39366cb62f9b6001602260019054906101000a900463ffffffff1633868634876021546040516200142898979695949392919062003192565b60405180910390a1620014656200145f6001602260019054906101000a900463ffffffff1633878734888051906020012062000984565b62001eaa565b6026546001600160a01b03166333d6247d6200148062000790565b6040518263ffffffff1660e01b81526004016200149f91815260200190565b600060405180830381600087803b158015620014ba57600080fd5b505af1158015620014cf573d6000803e3d6000fd5b50505050505050565b6027546001600160a01b03163314620015055760405162461bcd60e51b8152600401620006a89062002d76565b6200070062001ff6565b6200151962001a5d565b6001600160a01b038116620015805760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401620006a8565b6200158b8162001df9565b50565b60225460ff1615620015b45760405162461bcd60e51b8152600401620006a89062002e72565b60225463ffffffff6101009091048116908616036200162b5760405162461bcd60e51b815260206004820152603d602482015260008051602062004b3183398151915260448201527f2044657374696e6174696f6e2063616e6e6f7420626520697473656c660000006064820152608401620006a8565b60008060606001600160a01b038916620016bd57853414620016b35760405162461bcd60e51b81526020600482015260446024820181905260008051602062004b31833981519152908201527f20416d6f756e7420646f6573206e6f74206d61746368206d6573736167652e76606482015263616c756560e01b608482015260a401620006a8565b600091506200191f565b6001600160a01b03808a1660009081526025602090815260409182902082518084019093525463ffffffff81168352640100000000900490921691810182905290156200177c57604051632770a7eb60e21b81526001600160a01b038b1690639dc29fac90620017349033908b90600401620030c5565b600060405180830381600087803b1580156200174f57600080fd5b505af115801562001764573d6000803e3d6000fd5b5050505080602001519350806000015192506200191d565b84156200179157620017918a888888620020a5565b620017a86001600160a01b038b1633308a620024c9565b899350602260019054906101000a900463ffffffff169250896001600160a01b03166306fdde036040518163ffffffff1660e01b8152600401600060405180830381865afa158015620017ff573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620018299190810190620031ff565b8a6001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa15801562001868573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620018929190810190620031ff565b8b6001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015620018d1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620018f7919062003237565b6040516020016200190b9392919062003088565b60405160208183030381529060405291505b505b7f501781209a1f8899323b96b4ef08b168df93e0a90c673d1e4cce39366cb62f9b600083858b8b8b876021546040516200196198979695949392919062003192565b60405180910390a1620019866200145f600084868c8c8c888051906020012062000984565b6026546001600160a01b03166333d6247d620019a162000790565b6040518263ffffffff1660e01b8152600401620019c091815260200190565b600060405180830381600087803b158015620019db57600080fd5b505af1158015620019f0573d6000803e3d6000fd5b50505050505050505050505050565b60225460ff161562001a255760405162461bcd60e51b8152600401620006a89062002e72565b6022805460ff191660011790556040517f2261efe5aef6fedc1fd1550b25facc9181745623049c7901287030b9ad1a549790600090a1565b605a546001600160a01b03163314620007005760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401620006a8565b62001aca8a63ffffffff16620011ca565b1562001b215760405162461bcd60e51b8152602060048201526030602482015260008051602062004b1183398151915260448201526f08105b1c9958591e4818db185a5b595960821b6064820152608401620006a8565b6026546040805160208082018d90528183018c9052825180830384018152606083019384905280519101206312bd9b1960e11b90925260648101919091526000916001600160a01b03169063257b3632906084016020604051808303816000875af115801562001b95573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001bbb919062003257565b90508060000362001c1e5760405162461bcd60e51b8152602060048201526037602482015260008051602062004b118339815191526044820152760811db1bd8985b115e1a5d149bdbdd081a5b9d985b1a59604a1b6064820152608401620006a8565b60225463ffffffff878116610100909204161462001ca05760405162461bcd60e51b8152602060048201526043602482015260008051602062004b1183398151915260448201527f2044657374696e6174696f6e206e6574776f726b20646f6573206e6f74206d616064820152620e8c6d60eb1b608482015260a401620006a8565b602254600090610100900463ffffffff1662001cbe57508862001cc1565b50895b62001cec62001cdd848b8b8b8b8b8b8051906020012062000984565b8e8e63ffffffff168462000883565b620019f05760405162461bcd60e51b8152602060048201526032602482015260008051602062004b118339815191526044820152711024b73b30b634b21039b6ba10383937b7b360711b6064820152608401620006a8565b600062001d546101008362002e3f565b9050600062001d6661010084620030de565b6000928352602360205260409092208054600190931b9092179091555050565b600054610100900460ff1662001df35760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401620006a8565b62000700335b605a80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b62001ea58363a9059cbb60e01b848460405160240162001e6d929190620030c5565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915262002503565b505050565b80600162001ebb602060026200336e565b62001ec791906200337c565b6021541062001f2c5760405162461bcd60e51b815260206004820152602a60248201527f4465706f736974436f6e74726163743a5f6465706f7369743a204d65726b6c65604482015269081d1c995948199d5b1b60b21b6064820152608401620006a8565b60016021600082825462001f41919062003396565b909155505060215460005b602081101562001feb578160011660010362001f8157826001826020811062001f795762001f7962002dfd565b015550505050565b6001816020811062001f975762001f9762002dfd565b0154604080516020810192909252810184905260600160405160208183030381529060405280519060200120925060028262001fd4919062002e3f565b91508062001fe28162002e56565b91505062001f4c565b5062001ea5620033b1565b60225460ff16620020705760405162461bcd60e51b815260206004820152603b60248201527f456d657267656e63794d616e616765723a3a6966456d657267656e637953746160448201527f74653a206f6e6c7920696620656d657267656e637920737461746500000000006064820152608401620006a8565b6022805460ff191690556040517f1e5e34eea33501aecf2ebec9fe0e884a40804275ea7fe10b2ba084c8374308b390600090a1565b6000620020e883838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250620025dc92505050565b9050632afa533160e01b6001600160e01b0319821601620022dd5760008080808080806200211a896004818d620033c7565b810190620021299190620033f3565b9650965096509650965096509650336001600160a01b0316876001600160a01b0316146200216b5760405162461bcd60e51b8152600401620006a8906200344e565b6001600160a01b0386163014620021965760405162461bcd60e51b8152600401620006a890620034ab565b8a8514620022095760405162461bcd60e51b815260206004820152603960248201527f506f6c79676f6e5a6b45564d4272696467653a3a5f7065726d69743a205065726044820152780dad2e840c2dadeeadce840c8decae640dcdee840dac2e8c6d603b1b6064820152608401620006a8565b604080516001600160a01b0389811660248301528881166044830152606482018890526084820187905260ff861660a483015260c4820185905260e48083018590528351808403909101815261010490920183526020820180516001600160e01b031663d505accf60e01b1790529151918e169162002289919062002f72565b6000604051808303816000865af19150503d8060008114620022c8576040519150601f19603f3d011682016040523d82523d6000602084013e620022cd565b606091505b50505050505050505050620024c2565b6001600160e01b031981166323f2ebc360e21b14620023535760405162461bcd60e51b815260206004820152602b60248201527f506f6c79676f6e5a6b45564d4272696467653a3a5f7065726d69743a204e6f7460448201526a081d985b1a590818d85b1b60aa1b6064820152608401620006a8565b6000808080808080806200236b8a6004818e620033c7565b8101906200237a91906200350d565b97509750975097509750975097509750336001600160a01b0316886001600160a01b031614620023be5760405162461bcd60e51b8152600401620006a8906200344e565b6001600160a01b0387163014620023e95760405162461bcd60e51b8152600401620006a890620034ab565b604080516001600160a01b038a811660248301528981166044830152606482018990526084820188905286151560a483015260ff861660c483015260e482018590526101048083018590528351808403909101815261012490920183526020820180516001600160e01b03166323f2ebc360e21b1790529151918f169162002472919062002f72565b6000604051808303816000865af19150503d8060008114620024b1576040519150601f19603f3d011682016040523d82523d6000602084013e620024b6565b606091505b50505050505050505050505b5050505050565b6040516001600160a01b038085166024830152831660448201526064810182905262000d269085906323b872dd60e01b9060840162001e6d565b60006200255a826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316620025e39092919063ffffffff16565b80519091501562001ea557808060200190518101906200257b919062003599565b62001ea55760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401620006a8565b6020015190565b60606200097c848460008585600080866001600160a01b031685876040516200260d919062002f72565b60006040518083038185875af1925050503d80600081146200264c576040519150601f19603f3d011682016040523d82523d6000602084013e62002651565b606091505b509150915062002664878383876200266f565b979650505050505050565b60608315620026e3578251600003620026db576001600160a01b0385163b620026db5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401620006a8565b50816200097c565b6200097c8383815115620026fa5781518083602001fd5b8060405162461bcd60e51b8152600401620006a89190620035b9565b61154280620035cf83390190565b6001600160a01b03811681146200158b57600080fd5b8035620027478162002724565b919050565b803563ffffffff811681146200274757600080fd5b60008083601f8401126200277457600080fd5b5081356001600160401b038111156200278c57600080fd5b602083019150836020828501011115620027a557600080fd5b9250929050565b60008060008060008060a08789031215620027c657600080fd5b8635620027d38162002724565b9550620027e3602088016200274c565b94506040870135620027f58162002724565b93506060870135925060808701356001600160401b038111156200281857600080fd5b6200282689828a0162002761565b979a9699509497509295939492505050565b600080604083850312156200284c57600080fd5b62002857836200274c565b91506020830135620028698162002724565b809150509250929050565b6000602082840312156200288757600080fd5b5035919050565b600060208284031215620028a157600080fd5b620028ac826200274c565b9392505050565b600060208284031215620028c657600080fd5b8135620028ac8162002724565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715620029145762002914620028d3565b604052919050565b600082601f8301126200292e57600080fd5b813560206001600160401b038211156200294c576200294c620028d3565b8160051b6200295d828201620028e9565b92835284810182019282810190878511156200297857600080fd5b83870192505b8483101562002664578235825291830191908301906200297e565b60008060008060808587031215620029b057600080fd5b8435935060208501356001600160401b0380821115620029cf57600080fd5b620029dd888389016200291c565b9450604087013591508082168214620029f557600080fd5b509396929550929360600135925050565b60ff811681146200158b57600080fd5b600080600080600080600060e0888a03121562002a3257600080fd5b873562002a3f8162002a06565b965062002a4f602089016200274c565b9550604088013562002a618162002724565b945062002a71606089016200274c565b9350608088013562002a838162002724565b9699959850939692959460a0840135945060c09093013592915050565b60006001600160401b0382111562002abc5762002abc620028d3565b50601f01601f191660200190565b600082601f83011262002adc57600080fd5b813562002af362002aed8262002aa0565b620028e9565b81815284602083860101111562002b0957600080fd5b816020850160208301376000918101602001919091529392505050565b6000806000806000806000806000806101408b8d03121562002b4757600080fd5b8a356001600160401b038082111562002b5f57600080fd5b62002b6d8e838f016200291c565b9b5062002b7d60208e016200274c565b9a5060408d0135995060608d0135985062002b9b60808e016200274c565b975062002bab60a08e016200273a565b965062002bbb60c08e016200274c565b955062002bcb60e08e016200273a565b94506101008d013593506101208d013591508082111562002beb57600080fd5b5062002bfa8d828e0162002aca565b9150509295989b9194979a5092959850565b60008060006060848603121562002c2257600080fd5b62002c2d846200274c565b9250602084013562002c3f8162002724565b9150604084013562002c518162002724565b809150509250925092565b600080600080600080600060a0888a03121562002c7857600080fd5b62002c83886200274c565b9650602088013562002c958162002724565b955060408801356001600160401b038082111562002cb257600080fd5b62002cc08b838c0162002761565b909750955060608a013591508082111562002cda57600080fd5b5062002ce98a828b0162002761565b909450925050608088013562002cff8162002a06565b8091505092959891949750929550565b60008060006060848603121562002d2557600080fd5b62002d30846200274c565b9250602084013562002d428162002724565b915060408401356001600160401b0381111562002d5e57600080fd5b62002d6c8682870162002aca565b9150509250925092565b6020808252603a908201527f506f6c79676f6e5a6b45564d3a3a6f6e6c79506f6c79676f6e5a6b45564d3a2060408201527f6f6e6c7920506f6c79676f6e5a6b45564d20636f6e7472616374000000000000606082015260800190565b60e09290921b6001600160e01b031916825260601b6001600160601b031916600482015260180190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60008262002e515762002e5162002e13565b500490565b60006001820162002e6b5762002e6b62002e29565b5060010190565b60208082526042908201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960408201527f53746174653a206f6e6c79206966206e6f7420656d657267656e637920737461606082015261746560f01b608082015260a00190565b60005b8381101562002ef757818101518382015260200162002edd565b8381111562000d265750506000910152565b6000815180845262002f2381602086016020860162002eda565b601f01601f19169290920160200192915050565b6001600160a01b038416815263ffffffff8316602082015260606040820181905260009062002f699083018462002f09565b95945050505050565b6000825162002f8681846020870162002eda565b9190910192915050565b63ffffffff95861681529390941660208401526001600160a01b039182166040840152166060820152608081019190915260a00190565b600082601f83011262002fd957600080fd5b815162002fea62002aed8262002aa0565b8181528460208386010111156200300057600080fd5b6200097c82602083016020870162002eda565b6000806000606084860312156200302957600080fd5b83516001600160401b03808211156200304157600080fd5b6200304f8783880162002fc7565b945060208601519150808211156200306657600080fd5b50620030758682870162002fc7565b925050604084015162002c518162002a06565b6060815260006200309d606083018662002f09565b8281036020840152620030b1818662002f09565b91505060ff83166040830152949350505050565b6001600160a01b03929092168252602082015260400190565b600082620030f057620030f062002e13565b500690565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60608152600062003134606083018789620030f5565b828103602084015262003149818688620030f5565b91505060ff831660408301529695505050505050565b600083516200317381846020880162002eda565b8351908301906200318981836020880162002eda565b01949350505050565b60ff8916815263ffffffff88811660208301526001600160a01b03888116604084015287821660608401528616608083015260a0820185905261010060c08301819052600091620031e68483018762002f09565b925080851660e085015250509998505050505050505050565b6000602082840312156200321257600080fd5b81516001600160401b038111156200322957600080fd5b6200097c8482850162002fc7565b6000602082840312156200324a57600080fd5b8151620028ac8162002a06565b6000602082840312156200326a57600080fd5b5051919050565b600181815b80851115620032b257816000190482111562003296576200329662002e29565b80851615620032a457918102915b93841c939080029062003276565b509250929050565b600082620032cb575060016200074f565b81620032da575060006200074f565b8160018114620032f35760028114620032fe576200331e565b60019150506200074f565b60ff84111562003312576200331262002e29565b50506001821b6200074f565b5060208310610133831016604e8410600b841016171562003343575081810a6200074f565b6200334f838362003271565b806000190482111562003366576200336662002e29565b029392505050565b6000620028ac8383620032ba565b60008282101562003391576200339162002e29565b500390565b60008219821115620033ac57620033ac62002e29565b500190565b634e487b7160e01b600052600160045260246000fd5b60008085851115620033d857600080fd5b83861115620033e657600080fd5b5050820193919092039150565b600080600080600080600060e0888a0312156200340f57600080fd5b87356200341c8162002724565b965060208801356200342e8162002724565b95506040880135945060608801359350608088013562002a838162002a06565b6020808252603c908201527f506f6c79676f6e5a6b45564d4272696467653a3a5f7065726d69743a2050657260408201527f6d6974206f776e6572206d757374206265207468652073656e64657200000000606082015260800190565b60208082526033908201527f506f6c79676f6e5a6b45564d4272696467653a3a5f7065726d69743a205370656040820152726e646572206d7573742062652027746869732760681b606082015260800190565b80151581146200158b57600080fd5b600080600080600080600080610100898b0312156200352b57600080fd5b8835620035388162002724565b975060208901356200354a8162002724565b9650604089013595506060890135945060808901356200356a81620034fe565b935060a08901356200357c8162002a06565b979a969950949793969295929450505060c08201359160e0013590565b600060208284031215620035ac57600080fd5b8151620028ac81620034fe565b602081526000620028ac602083018462002f0956fe60c06040523480156200001157600080fd5b5060405162001542380380620015428339810160408190526200003491620002ad565b82826003620000448382620003c1565b506004620000538282620003c1565b5050600580546001600160a81b0319163360ff60a01b191617600160a01b60ff851602179055504660808190526200008b9062000098565b60a052506200048d915050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f620000c562000146565b805160209182012060408051808201825260018152603160f81b90840152805192830193909352918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060820152608081018390523060a082015260c001604051602081830303815290604052805190602001209050919050565b606060038054620001579062000332565b80601f0160208091040260200160405190810160405280929190818152602001828054620001859062000332565b8015620001d65780601f10620001aa57610100808354040283529160200191620001d6565b820191906000526020600020905b815481529060010190602001808311620001b857829003601f168201915b5050505050905090565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200020857600080fd5b81516001600160401b0380821115620002255762000225620001e0565b604051601f8301601f19908116603f01168101908282118183101715620002505762000250620001e0565b816040528381526020925086838588010111156200026d57600080fd5b600091505b8382101562000291578582018301518183018401529082019062000272565b83821115620002a35760008385830101525b9695505050505050565b600080600060608486031215620002c357600080fd5b83516001600160401b0380821115620002db57600080fd5b620002e987838801620001f6565b945060208601519150808211156200030057600080fd5b506200030f86828701620001f6565b925050604084015160ff811681146200032757600080fd5b809150509250925092565b600181811c908216806200034757607f821691505b6020821081036200036857634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620003bc57600081815260208120601f850160051c81016020861015620003975750805b601f850160051c820191505b81811015620003b857828155600101620003a3565b5050505b505050565b81516001600160401b03811115620003dd57620003dd620001e0565b620003f581620003ee845462000332565b846200036e565b602080601f8311600181146200042d5760008415620004145750858301515b600019600386901b1c1916600185901b178555620003b8565b600085815260208120601f198616915b828110156200045e578886015182559484019460019091019084016200043d565b50858210156200047d5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60805160a051611088620004ba60003960006104690152600081816102f9015261043301526110886000f3fe608060405234801561001057600080fd5b50600436106101375760003560e01c806370a08231116100b8578063a457c2d71161007c578063a457c2d7146102ce578063a9059cbb146102e1578063cd0d0096146102f4578063d505accf1461031b578063dd62ed3e1461032e578063ffa1ad741461034157600080fd5b806370a082311461023f5780637ecebe001461026857806395d89b41146102885780639dc29fac14610290578063a3c573eb146102a357600080fd5b806330adf81f116100ff57806330adf81f146101c9578063313ce567146101f05780633644e5151461020f578063395093511461021757806340c10f191461022a57600080fd5b806306fdde031461013c578063095ea7b31461015a57806318160ddd1461017d57806320606b701461018f57806323b872dd146101b6575b600080fd5b610144610361565b6040516101519190610dc2565b60405180910390f35b61016d610168366004610e33565b6103f3565b6040519015158152602001610151565b6002545b604051908152602001610151565b6101817f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81565b61016d6101c4366004610e5d565b61040b565b6101817f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b600554600160a01b900460ff1660405160ff9091168152602001610151565b61018161042f565b61016d610225366004610e33565b61048b565b61023d610238366004610e33565b6104ad565b005b61018161024d366004610e99565b6001600160a01b031660009081526020819052604090205490565b610181610276366004610e99565b60066020526000908152604090205481565b6101446104ee565b61023d61029e366004610e33565b6104fd565b6005546102b6906001600160a01b031681565b6040516001600160a01b039091168152602001610151565b61016d6102dc366004610e33565b610531565b61016d6102ef366004610e33565b6105ac565b6101817f000000000000000000000000000000000000000000000000000000000000000081565b61023d610329366004610ebb565b6105ba565b61018161033c366004610f2e565b6107f5565b610144604051806040016040528060018152602001603160f81b81525081565b60606003805461037090610f61565b80601f016020809104026020016040519081016040528092919081815260200182805461039c90610f61565b80156103e95780601f106103be576101008083540402835291602001916103e9565b820191906000526020600020905b8154815290600101906020018083116103cc57829003601f168201915b5050505050905090565b600033610401818585610820565b5060019392505050565b600033610419858285610945565b6104248585856109bf565b506001949350505050565b60007f000000000000000000000000000000000000000000000000000000000000000046146104665761046146610b51565b905090565b507f000000000000000000000000000000000000000000000000000000000000000090565b60003361040181858561049e83836107f5565b6104a89190610fb1565b610820565b6005546001600160a01b031633146104e05760405162461bcd60e51b81526004016104d790610fc9565b60405180910390fd5b6104ea8282610bfd565b5050565b60606004805461037090610f61565b6005546001600160a01b031633146105275760405162461bcd60e51b81526004016104d790610fc9565b6104ea8282610caa565b6000338161053f82866107f5565b90508381101561059f5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016104d7565b6104248286868403610820565b6000336104018185856109bf565b834211156106165760405162461bcd60e51b8152602060048201526024808201527f546f6b656e577261707065643a3a7065726d69743a20457870697265642070656044820152631c9b5a5d60e21b60648201526084016104d7565b6001600160a01b038716600090815260066020526040812080547f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918a918a918a91908661066383611019565b909155506040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e00160405160208183030381529060405280519060200120905060006106c161042f565b60405161190160f01b602082015260228101919091526042810183905260620160408051601f198184030181528282528051602091820120600080855291840180845281905260ff89169284019290925260608301879052608083018690529092509060019060a0016020604051602081039080840390855afa15801561074c573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116158015906107825750896001600160a01b0316816001600160a01b0316145b6107de5760405162461bcd60e51b815260206004820152602760248201527f546f6b656e577261707065643a3a7065726d69743a20496e76616c6964207369604482015266676e617475726560c81b60648201526084016104d7565b6107e98a8a8a610820565b50505050505050505050565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166108825760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016104d7565b6001600160a01b0382166108e35760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016104d7565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b600061095184846107f5565b905060001981146109b957818110156109ac5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016104d7565b6109b98484848403610820565b50505050565b6001600160a01b038316610a235760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016104d7565b6001600160a01b038216610a855760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016104d7565b6001600160a01b03831660009081526020819052604090205481811015610afd5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016104d7565b6001600160a01b0384811660008181526020818152604080832087870390559387168083529184902080548701905592518581529092600080516020611033833981519152910160405180910390a36109b9565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f610b7c610361565b805160209182012060408051808201825260018152603160f81b90840152805192830193909352918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060820152608081018390523060a082015260c001604051602081830303815290604052805190602001209050919050565b6001600160a01b038216610c535760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016104d7565b8060026000828254610c659190610fb1565b90915550506001600160a01b03821660008181526020818152604080832080548601905551848152600080516020611033833981519152910160405180910390a35050565b6001600160a01b038216610d0a5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016104d7565b6001600160a01b03821660009081526020819052604090205481811015610d7e5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016104d7565b6001600160a01b0383166000818152602081815260408083208686039055600280548790039055518581529192916000805160206110338339815191529101610938565b600060208083528351808285015260005b81811015610def57858101830151858201604001528201610dd3565b81811115610e01576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b0381168114610e2e57600080fd5b919050565b60008060408385031215610e4657600080fd5b610e4f83610e17565b946020939093013593505050565b600080600060608486031215610e7257600080fd5b610e7b84610e17565b9250610e8960208501610e17565b9150604084013590509250925092565b600060208284031215610eab57600080fd5b610eb482610e17565b9392505050565b600080600080600080600060e0888a031215610ed657600080fd5b610edf88610e17565b9650610eed60208901610e17565b95506040880135945060608801359350608088013560ff81168114610f1157600080fd5b9699959850939692959460a0840135945060c09093013592915050565b60008060408385031215610f4157600080fd5b610f4a83610e17565b9150610f5860208401610e17565b90509250929050565b600181811c90821680610f7557607f821691505b602082108103610f9557634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60008219821115610fc457610fc4610f9b565b500190565b60208082526030908201527f546f6b656e577261707065643a3a6f6e6c794272696467653a204e6f7420506f60408201526f6c79676f6e5a6b45564d42726964676560801b606082015260800190565b60006001820161102b5761102b610f9b565b506001019056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212208b7986f78e961ad6c0885b86b24ce427045be98073c1f3d7fe18180542ab873564736f6c634300080f0033506f6c79676f6e5a6b45564d4272696467653a3a5f7665726966794c6561663a506f6c79676f6e5a6b45564d4272696467653a3a62726964676541737365743aa264697066735822122062be758f85eced237f3de1b441a326dd10663d44821178dc699a7c83ca60affa64736f6c634300080f0033", - "deployedBytecode": "0x608060405260043610620001af5760003560e01c80637b6323c111620000e9578063bab161bf1162000090578063bab161bf1462000525578063d02103ca146200055f578063d96a15f71462000581578063dbc169761462000598578063ed6be5c914620005b0578063ee25560b14620005c7578063f2fde38b14620005f8578063ff634ed7146200061d57600080fd5b80637b6323c1146200041a57806381b1c174146200043f5780638da5cb5b146200047957806391e57e2d14620004995780639e34070f14620004b1578063a08e8a0814620004d6578063aaa13cc2146200050057600080fd5b8063318aee3d116200015a578063318aee3d14620002c557806334ac9cf214620003345780633ae0504714620003565780633da81682146200036e5780633e19704314620003935780634638554914620003b8578063647c576c14620003dd578063715018a6146200040257600080fd5b80630871e97114620001b457806315064c9614620001cd5780632072f6c514620001fe57806322e95f2c14620002165780632b5e42e714620002545780632c3f58cd14620002795780632dfdf0b5146200029e575b600080fd5b620001cb620001c5366004620027ac565b62000634565b005b348015620001da57600080fd5b50602254620001e99060ff1681565b60405190151581526020015b60405180910390f35b3480156200020b57600080fd5b50620001cb620006c9565b3480156200022357600080fd5b506200023b6200023536600462002838565b62000702565b6040516001600160a01b039091168152602001620001f5565b3480156200026157600080fd5b50620001cb6200027336600462002874565b62000755565b3480156200028657600080fd5b50620001cb620002983660046200288e565b62000764565b348015620002ab57600080fd5b50620002b660215481565b604051908152602001620001f5565b348015620002d257600080fd5b506200030f620002e4366004620028b3565b60256020526000908152604090205463ffffffff81169064010000000090046001600160a01b031682565b6040805163ffffffff90931683526001600160a01b03909116602083015201620001f5565b3480156200034157600080fd5b506027546200023b906001600160a01b031681565b3480156200036357600080fd5b50620002b662000790565b3480156200037b57600080fd5b50620001e96200038d36600462002999565b62000883565b348015620003a057600080fd5b50620002b6620003b236600462002a16565b62000984565b348015620003c557600080fd5b50620001cb620003d736600462002b26565b62000a11565b348015620003ea57600080fd5b50620001cb620003fc36600462002c0c565b62000bb7565b3480156200040f57600080fd5b50620001cb62000d2c565b3480156200042757600080fd5b50620001cb6200043936600462002b26565b62000d42565b3480156200044c57600080fd5b506200023b6200045e36600462002874565b6024602052600090815260409020546001600160a01b031681565b3480156200048657600080fd5b50605a546001600160a01b03166200023b565b348015620004a657600080fd5b50620002b6608c5481565b348015620004be57600080fd5b50620001e9620004d036600462002874565b620011ca565b348015620004e357600080fd5b50620004ed600081565b60405160ff9091168152602001620001f5565b3480156200050d57600080fd5b506200023b6200051f36600462002c5c565b6200120f565b3480156200053257600080fd5b506022546200054990610100900463ffffffff1681565b60405163ffffffff9091168152602001620001f5565b3480156200056c57600080fd5b506026546200023b906001600160a01b031681565b620001cb6200059236600462002d0f565b62001326565b348015620005a557600080fd5b50620001cb620014d8565b348015620005bd57600080fd5b5062000549600081565b348015620005d457600080fd5b50620002b6620005e636600462002874565b60236020526000908152604090205481565b3480156200060557600080fd5b50620001cb62000617366004620028b3565b6200150f565b3480156200062a57600080fd5b50620004ed600181565b608c54341115620006b15760405162461bcd60e51b8152602060048201526047602482015260008051602062004b3183398151915260448201527f2043616e6e6f7420627269646765206d6f7265207468616e206d6178457468656064820152667242726964676560c81b608482015260a4015b60405180910390fd5b620006c18686868686866200158e565b505050505050565b6027546001600160a01b03163314620006f65760405162461bcd60e51b8152600401620006a89062002d76565b62000700620019ff565b565b60006024600084846040516020016200071d92919062002dd3565b60408051601f19818403018152918152815160209283012083529082019290925201600020546001600160a01b031690505b92915050565b6200075f62001a5d565b608c55565b6200076e62001a5d565b6022805463ffffffff9092166101000264ffffffff0019909216919091179055565b602154600090819081805b60208110156200087a5782600116600103620007fb5760018160208110620007c757620007c762002dfd565b0154604080516020810192909252810185905260600160405160208183030381529060405280519060200120935062000828565b60408051602081018690529081018390526060016040516020818303038152906040528051906020012093505b6200083560028462002e3f565b60408051602081018590529081018490529093506060016040516020818303038152906040528051906020012091508080620008719062002e56565b9150506200079b565b50919392505050565b6000846001600160401b038416825b6020811015620009755781600116600103620008ff57868181518110620008bd57620008bd62002dfd565b602002602001015183604051602001620008e1929190918252602082015260400190565b60405160208183030381529060405280519060200120925062000951565b8287828151811062000915576200091562002dfd565b602002602001015160405160200162000938929190918252602082015260400190565b6040516020818303038152906040528051906020012092505b6200095e60028362002e3f565b9150806200096c8162002e56565b91505062000892565b5050821490505b949350505050565b6040516001600160f81b031960f889901b1660208201526001600160e01b031960e088811b821660218401526001600160601b0319606089811b821660258601529188901b909216603984015285901b16603d8201526051810183905260718101829052600090609101604051602081830303815290604052805190602001209050979650505050505050565b60225460ff161562000a375760405162461bcd60e51b8152600401620006a89062002e72565b62000a4d8a8a8a8a8a8a8a8a8a8a600162001ab9565b62000a5e8963ffffffff1662001d44565b6000836001600160a01b03168387898560405160240162000a829392919062002f37565b60408051601f198184030181529181526020820180516001600160e01b0316630c035af960e11b1790525162000ab9919062002f72565b60006040518083038185875af1925050503d806000811462000af8576040519150601f19603f3d011682016040523d82523d6000602084013e62000afd565b606091505b505090508062000b695760405162461bcd60e51b815260206004820152603060248201527f506f6c79676f6e5a6b45564d4272696467653a3a636c61696d4d65737361676560448201526f0e8813595cdcd859d94819985a5b195960821b6064820152608401620006a8565b7f25308c93ceeed162da955b3f7ce3e3f93606579e40fb92029faa9efe275459838a8888878760405162000ba295949392919062002f90565b60405180910390a15050505050505050505050565b600054610100900460ff161580801562000bd85750600054600160ff909116105b8062000bf45750303b15801562000bf4575060005460ff166001145b62000c595760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401620006a8565b6000805460ff19166001179055801562000c7d576000805461ff0019166101001790555b6022805463ffffffff86166101000264ffffffff0019909116179055602680546001600160a01b038086166001600160a01b03199283161790925560278054928516929091169190911790556703782dace9d90000608c5562000cdf62001d86565b801562000d26576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b62000d3662001a5d565b62000700600062001df9565b60225460ff161562000d685760405162461bcd60e51b8152600401620006a89062002e72565b62000d7e8a8a8a8a8a8a8a8a8a8a600062001ab9565b62000d8f8963ffffffff1662001d44565b6001600160a01b03851662000e8657604080516000808252602082019092526001600160a01b03851690849060405162000dca919062002f72565b60006040518083038185875af1925050503d806000811462000e09576040519150601f19603f3d011682016040523d82523d6000602084013e62000e0e565b606091505b505090508062000e7f5760405162461bcd60e51b815260206004820152603560248201527f506f6c79676f6e5a6b45564d4272696467653a3a636c61696d41737365743a20604482015274115d1a195c881d1c985b9cd9995c8819985a5b1959605a1b6064820152608401620006a8565b506200117d565b60225463ffffffff61010090910481169087160362000ebb5762000eb56001600160a01b038616848462001e4b565b6200117d565b6000868660405160200162000ed292919062002dd3565b60408051601f198184030181529181528151602092830120600081815260249093529120549091506001600160a01b031680620011155760008060008580602001905181019062000f24919062003013565b92509250925060008584848460405162000f3e9062002716565b62000f4c9392919062003088565b8190604051809103906000f590508015801562000f6d573d6000803e3d6000fd5b506040516340c10f1960e01b81529091506001600160a01b038216906340c10f199062000fa1908c908c90600401620030c5565b600060405180830381600087803b15801562000fbc57600080fd5b505af115801562000fd1573d6000803e3d6000fd5b50505050806024600088815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060405180604001604052808d63ffffffff1681526020018c6001600160a01b031681525060256000836001600160a01b03166001600160a01b0316815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a8154816001600160a01b0302191690836001600160a01b031602179055509050507fccd7715648d1f2bb13e158f96b5b6c3aeda555d4cb87112e274a6f28bc571d598c8c83604051620011039392919063ffffffff9390931683526001600160a01b03918216602084015216604082015260600190565b60405180910390a1505050506200117a565b6040516340c10f1960e01b81526001600160a01b038216906340c10f1990620011459088908890600401620030c5565b600060405180830381600087803b1580156200116057600080fd5b505af115801562001175573d6000803e3d6000fd5b505050505b50505b7f25308c93ceeed162da955b3f7ce3e3f93606579e40fb92029faa9efe275459838987878686604051620011b695949392919062002f90565b60405180910390a150505050505050505050565b600080620011db6101008462002e3f565b90506000620011ed61010085620030de565b60009283526023602052604090922054600190921b9182169091149392505050565b60008088886040516020016200122792919062002dd3565b604051602081830303815290604052805190602001209050600060ff60f81b3083604051806020016200125a9062002716565b601f1982820381018352601f90910116604081905262001287908d908d908d908d908d906020016200311e565b60408051601f1981840301815290829052620012a792916020016200315f565b604051602081830303815290604052805190602001206040516020016200130094939291906001600160f81b031994909416845260609290921b6001600160601b03191660018401526015830152603582015260550190565b60408051808303601f1901815291905280516020909101209a9950505050505050505050565b60225460ff16156200134c5760405162461bcd60e51b8152600401620006a89062002e72565b60225463ffffffff610100909104811690841603620013d45760405162461bcd60e51b815260206004820152603f60248201527f506f6c79676f6e5a6b45564d4272696467653a3a6272696467654d657373616760448201527f653a2044657374696e6174696f6e2063616e6e6f7420626520697473656c66006064820152608401620006a8565b7f501781209a1f8899323b96b4ef08b168df93e0a90c673d1e4cce39366cb62f9b6001602260019054906101000a900463ffffffff1633868634876021546040516200142898979695949392919062003192565b60405180910390a1620014656200145f6001602260019054906101000a900463ffffffff1633878734888051906020012062000984565b62001eaa565b6026546001600160a01b03166333d6247d6200148062000790565b6040518263ffffffff1660e01b81526004016200149f91815260200190565b600060405180830381600087803b158015620014ba57600080fd5b505af1158015620014cf573d6000803e3d6000fd5b50505050505050565b6027546001600160a01b03163314620015055760405162461bcd60e51b8152600401620006a89062002d76565b6200070062001ff6565b6200151962001a5d565b6001600160a01b038116620015805760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401620006a8565b6200158b8162001df9565b50565b60225460ff1615620015b45760405162461bcd60e51b8152600401620006a89062002e72565b60225463ffffffff6101009091048116908616036200162b5760405162461bcd60e51b815260206004820152603d602482015260008051602062004b3183398151915260448201527f2044657374696e6174696f6e2063616e6e6f7420626520697473656c660000006064820152608401620006a8565b60008060606001600160a01b038916620016bd57853414620016b35760405162461bcd60e51b81526020600482015260446024820181905260008051602062004b31833981519152908201527f20416d6f756e7420646f6573206e6f74206d61746368206d6573736167652e76606482015263616c756560e01b608482015260a401620006a8565b600091506200191f565b6001600160a01b03808a1660009081526025602090815260409182902082518084019093525463ffffffff81168352640100000000900490921691810182905290156200177c57604051632770a7eb60e21b81526001600160a01b038b1690639dc29fac90620017349033908b90600401620030c5565b600060405180830381600087803b1580156200174f57600080fd5b505af115801562001764573d6000803e3d6000fd5b5050505080602001519350806000015192506200191d565b84156200179157620017918a888888620020a5565b620017a86001600160a01b038b1633308a620024c9565b899350602260019054906101000a900463ffffffff169250896001600160a01b03166306fdde036040518163ffffffff1660e01b8152600401600060405180830381865afa158015620017ff573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620018299190810190620031ff565b8a6001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa15801562001868573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620018929190810190620031ff565b8b6001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015620018d1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620018f7919062003237565b6040516020016200190b9392919062003088565b60405160208183030381529060405291505b505b7f501781209a1f8899323b96b4ef08b168df93e0a90c673d1e4cce39366cb62f9b600083858b8b8b876021546040516200196198979695949392919062003192565b60405180910390a1620019866200145f600084868c8c8c888051906020012062000984565b6026546001600160a01b03166333d6247d620019a162000790565b6040518263ffffffff1660e01b8152600401620019c091815260200190565b600060405180830381600087803b158015620019db57600080fd5b505af1158015620019f0573d6000803e3d6000fd5b50505050505050505050505050565b60225460ff161562001a255760405162461bcd60e51b8152600401620006a89062002e72565b6022805460ff191660011790556040517f2261efe5aef6fedc1fd1550b25facc9181745623049c7901287030b9ad1a549790600090a1565b605a546001600160a01b03163314620007005760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401620006a8565b62001aca8a63ffffffff16620011ca565b1562001b215760405162461bcd60e51b8152602060048201526030602482015260008051602062004b1183398151915260448201526f08105b1c9958591e4818db185a5b595960821b6064820152608401620006a8565b6026546040805160208082018d90528183018c9052825180830384018152606083019384905280519101206312bd9b1960e11b90925260648101919091526000916001600160a01b03169063257b3632906084016020604051808303816000875af115801562001b95573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001bbb919062003257565b90508060000362001c1e5760405162461bcd60e51b8152602060048201526037602482015260008051602062004b118339815191526044820152760811db1bd8985b115e1a5d149bdbdd081a5b9d985b1a59604a1b6064820152608401620006a8565b60225463ffffffff878116610100909204161462001ca05760405162461bcd60e51b8152602060048201526043602482015260008051602062004b1183398151915260448201527f2044657374696e6174696f6e206e6574776f726b20646f6573206e6f74206d616064820152620e8c6d60eb1b608482015260a401620006a8565b602254600090610100900463ffffffff1662001cbe57508862001cc1565b50895b62001cec62001cdd848b8b8b8b8b8b8051906020012062000984565b8e8e63ffffffff168462000883565b620019f05760405162461bcd60e51b8152602060048201526032602482015260008051602062004b118339815191526044820152711024b73b30b634b21039b6ba10383937b7b360711b6064820152608401620006a8565b600062001d546101008362002e3f565b9050600062001d6661010084620030de565b6000928352602360205260409092208054600190931b9092179091555050565b600054610100900460ff1662001df35760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401620006a8565b62000700335b605a80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b62001ea58363a9059cbb60e01b848460405160240162001e6d929190620030c5565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915262002503565b505050565b80600162001ebb602060026200336e565b62001ec791906200337c565b6021541062001f2c5760405162461bcd60e51b815260206004820152602a60248201527f4465706f736974436f6e74726163743a5f6465706f7369743a204d65726b6c65604482015269081d1c995948199d5b1b60b21b6064820152608401620006a8565b60016021600082825462001f41919062003396565b909155505060215460005b602081101562001feb578160011660010362001f8157826001826020811062001f795762001f7962002dfd565b015550505050565b6001816020811062001f975762001f9762002dfd565b0154604080516020810192909252810184905260600160405160208183030381529060405280519060200120925060028262001fd4919062002e3f565b91508062001fe28162002e56565b91505062001f4c565b5062001ea5620033b1565b60225460ff16620020705760405162461bcd60e51b815260206004820152603b60248201527f456d657267656e63794d616e616765723a3a6966456d657267656e637953746160448201527f74653a206f6e6c7920696620656d657267656e637920737461746500000000006064820152608401620006a8565b6022805460ff191690556040517f1e5e34eea33501aecf2ebec9fe0e884a40804275ea7fe10b2ba084c8374308b390600090a1565b6000620020e883838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250620025dc92505050565b9050632afa533160e01b6001600160e01b0319821601620022dd5760008080808080806200211a896004818d620033c7565b810190620021299190620033f3565b9650965096509650965096509650336001600160a01b0316876001600160a01b0316146200216b5760405162461bcd60e51b8152600401620006a8906200344e565b6001600160a01b0386163014620021965760405162461bcd60e51b8152600401620006a890620034ab565b8a8514620022095760405162461bcd60e51b815260206004820152603960248201527f506f6c79676f6e5a6b45564d4272696467653a3a5f7065726d69743a205065726044820152780dad2e840c2dadeeadce840c8decae640dcdee840dac2e8c6d603b1b6064820152608401620006a8565b604080516001600160a01b0389811660248301528881166044830152606482018890526084820187905260ff861660a483015260c4820185905260e48083018590528351808403909101815261010490920183526020820180516001600160e01b031663d505accf60e01b1790529151918e169162002289919062002f72565b6000604051808303816000865af19150503d8060008114620022c8576040519150601f19603f3d011682016040523d82523d6000602084013e620022cd565b606091505b50505050505050505050620024c2565b6001600160e01b031981166323f2ebc360e21b14620023535760405162461bcd60e51b815260206004820152602b60248201527f506f6c79676f6e5a6b45564d4272696467653a3a5f7065726d69743a204e6f7460448201526a081d985b1a590818d85b1b60aa1b6064820152608401620006a8565b6000808080808080806200236b8a6004818e620033c7565b8101906200237a91906200350d565b97509750975097509750975097509750336001600160a01b0316886001600160a01b031614620023be5760405162461bcd60e51b8152600401620006a8906200344e565b6001600160a01b0387163014620023e95760405162461bcd60e51b8152600401620006a890620034ab565b604080516001600160a01b038a811660248301528981166044830152606482018990526084820188905286151560a483015260ff861660c483015260e482018590526101048083018590528351808403909101815261012490920183526020820180516001600160e01b03166323f2ebc360e21b1790529151918f169162002472919062002f72565b6000604051808303816000865af19150503d8060008114620024b1576040519150601f19603f3d011682016040523d82523d6000602084013e620024b6565b606091505b50505050505050505050505b5050505050565b6040516001600160a01b038085166024830152831660448201526064810182905262000d269085906323b872dd60e01b9060840162001e6d565b60006200255a826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316620025e39092919063ffffffff16565b80519091501562001ea557808060200190518101906200257b919062003599565b62001ea55760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401620006a8565b6020015190565b60606200097c848460008585600080866001600160a01b031685876040516200260d919062002f72565b60006040518083038185875af1925050503d80600081146200264c576040519150601f19603f3d011682016040523d82523d6000602084013e62002651565b606091505b509150915062002664878383876200266f565b979650505050505050565b60608315620026e3578251600003620026db576001600160a01b0385163b620026db5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401620006a8565b50816200097c565b6200097c8383815115620026fa5781518083602001fd5b8060405162461bcd60e51b8152600401620006a89190620035b9565b61154280620035cf83390190565b6001600160a01b03811681146200158b57600080fd5b8035620027478162002724565b919050565b803563ffffffff811681146200274757600080fd5b60008083601f8401126200277457600080fd5b5081356001600160401b038111156200278c57600080fd5b602083019150836020828501011115620027a557600080fd5b9250929050565b60008060008060008060a08789031215620027c657600080fd5b8635620027d38162002724565b9550620027e3602088016200274c565b94506040870135620027f58162002724565b93506060870135925060808701356001600160401b038111156200281857600080fd5b6200282689828a0162002761565b979a9699509497509295939492505050565b600080604083850312156200284c57600080fd5b62002857836200274c565b91506020830135620028698162002724565b809150509250929050565b6000602082840312156200288757600080fd5b5035919050565b600060208284031215620028a157600080fd5b620028ac826200274c565b9392505050565b600060208284031215620028c657600080fd5b8135620028ac8162002724565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715620029145762002914620028d3565b604052919050565b600082601f8301126200292e57600080fd5b813560206001600160401b038211156200294c576200294c620028d3565b8160051b6200295d828201620028e9565b92835284810182019282810190878511156200297857600080fd5b83870192505b8483101562002664578235825291830191908301906200297e565b60008060008060808587031215620029b057600080fd5b8435935060208501356001600160401b0380821115620029cf57600080fd5b620029dd888389016200291c565b9450604087013591508082168214620029f557600080fd5b509396929550929360600135925050565b60ff811681146200158b57600080fd5b600080600080600080600060e0888a03121562002a3257600080fd5b873562002a3f8162002a06565b965062002a4f602089016200274c565b9550604088013562002a618162002724565b945062002a71606089016200274c565b9350608088013562002a838162002724565b9699959850939692959460a0840135945060c09093013592915050565b60006001600160401b0382111562002abc5762002abc620028d3565b50601f01601f191660200190565b600082601f83011262002adc57600080fd5b813562002af362002aed8262002aa0565b620028e9565b81815284602083860101111562002b0957600080fd5b816020850160208301376000918101602001919091529392505050565b6000806000806000806000806000806101408b8d03121562002b4757600080fd5b8a356001600160401b038082111562002b5f57600080fd5b62002b6d8e838f016200291c565b9b5062002b7d60208e016200274c565b9a5060408d0135995060608d0135985062002b9b60808e016200274c565b975062002bab60a08e016200273a565b965062002bbb60c08e016200274c565b955062002bcb60e08e016200273a565b94506101008d013593506101208d013591508082111562002beb57600080fd5b5062002bfa8d828e0162002aca565b9150509295989b9194979a5092959850565b60008060006060848603121562002c2257600080fd5b62002c2d846200274c565b9250602084013562002c3f8162002724565b9150604084013562002c518162002724565b809150509250925092565b600080600080600080600060a0888a03121562002c7857600080fd5b62002c83886200274c565b9650602088013562002c958162002724565b955060408801356001600160401b038082111562002cb257600080fd5b62002cc08b838c0162002761565b909750955060608a013591508082111562002cda57600080fd5b5062002ce98a828b0162002761565b909450925050608088013562002cff8162002a06565b8091505092959891949750929550565b60008060006060848603121562002d2557600080fd5b62002d30846200274c565b9250602084013562002d428162002724565b915060408401356001600160401b0381111562002d5e57600080fd5b62002d6c8682870162002aca565b9150509250925092565b6020808252603a908201527f506f6c79676f6e5a6b45564d3a3a6f6e6c79506f6c79676f6e5a6b45564d3a2060408201527f6f6e6c7920506f6c79676f6e5a6b45564d20636f6e7472616374000000000000606082015260800190565b60e09290921b6001600160e01b031916825260601b6001600160601b031916600482015260180190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60008262002e515762002e5162002e13565b500490565b60006001820162002e6b5762002e6b62002e29565b5060010190565b60208082526042908201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960408201527f53746174653a206f6e6c79206966206e6f7420656d657267656e637920737461606082015261746560f01b608082015260a00190565b60005b8381101562002ef757818101518382015260200162002edd565b8381111562000d265750506000910152565b6000815180845262002f2381602086016020860162002eda565b601f01601f19169290920160200192915050565b6001600160a01b038416815263ffffffff8316602082015260606040820181905260009062002f699083018462002f09565b95945050505050565b6000825162002f8681846020870162002eda565b9190910192915050565b63ffffffff95861681529390941660208401526001600160a01b039182166040840152166060820152608081019190915260a00190565b600082601f83011262002fd957600080fd5b815162002fea62002aed8262002aa0565b8181528460208386010111156200300057600080fd5b6200097c82602083016020870162002eda565b6000806000606084860312156200302957600080fd5b83516001600160401b03808211156200304157600080fd5b6200304f8783880162002fc7565b945060208601519150808211156200306657600080fd5b50620030758682870162002fc7565b925050604084015162002c518162002a06565b6060815260006200309d606083018662002f09565b8281036020840152620030b1818662002f09565b91505060ff83166040830152949350505050565b6001600160a01b03929092168252602082015260400190565b600082620030f057620030f062002e13565b500690565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60608152600062003134606083018789620030f5565b828103602084015262003149818688620030f5565b91505060ff831660408301529695505050505050565b600083516200317381846020880162002eda565b8351908301906200318981836020880162002eda565b01949350505050565b60ff8916815263ffffffff88811660208301526001600160a01b03888116604084015287821660608401528616608083015260a0820185905261010060c08301819052600091620031e68483018762002f09565b925080851660e085015250509998505050505050505050565b6000602082840312156200321257600080fd5b81516001600160401b038111156200322957600080fd5b6200097c8482850162002fc7565b6000602082840312156200324a57600080fd5b8151620028ac8162002a06565b6000602082840312156200326a57600080fd5b5051919050565b600181815b80851115620032b257816000190482111562003296576200329662002e29565b80851615620032a457918102915b93841c939080029062003276565b509250929050565b600082620032cb575060016200074f565b81620032da575060006200074f565b8160018114620032f35760028114620032fe576200331e565b60019150506200074f565b60ff84111562003312576200331262002e29565b50506001821b6200074f565b5060208310610133831016604e8410600b841016171562003343575081810a6200074f565b6200334f838362003271565b806000190482111562003366576200336662002e29565b029392505050565b6000620028ac8383620032ba565b60008282101562003391576200339162002e29565b500390565b60008219821115620033ac57620033ac62002e29565b500190565b634e487b7160e01b600052600160045260246000fd5b60008085851115620033d857600080fd5b83861115620033e657600080fd5b5050820193919092039150565b600080600080600080600060e0888a0312156200340f57600080fd5b87356200341c8162002724565b965060208801356200342e8162002724565b95506040880135945060608801359350608088013562002a838162002a06565b6020808252603c908201527f506f6c79676f6e5a6b45564d4272696467653a3a5f7065726d69743a2050657260408201527f6d6974206f776e6572206d757374206265207468652073656e64657200000000606082015260800190565b60208082526033908201527f506f6c79676f6e5a6b45564d4272696467653a3a5f7065726d69743a205370656040820152726e646572206d7573742062652027746869732760681b606082015260800190565b80151581146200158b57600080fd5b600080600080600080600080610100898b0312156200352b57600080fd5b8835620035388162002724565b975060208901356200354a8162002724565b9650604089013595506060890135945060808901356200356a81620034fe565b935060a08901356200357c8162002a06565b979a969950949793969295929450505060c08201359160e0013590565b600060208284031215620035ac57600080fd5b8151620028ac81620034fe565b602081526000620028ac602083018462002f0956fe60c06040523480156200001157600080fd5b5060405162001542380380620015428339810160408190526200003491620002ad565b82826003620000448382620003c1565b506004620000538282620003c1565b5050600580546001600160a81b0319163360ff60a01b191617600160a01b60ff851602179055504660808190526200008b9062000098565b60a052506200048d915050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f620000c562000146565b805160209182012060408051808201825260018152603160f81b90840152805192830193909352918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060820152608081018390523060a082015260c001604051602081830303815290604052805190602001209050919050565b606060038054620001579062000332565b80601f0160208091040260200160405190810160405280929190818152602001828054620001859062000332565b8015620001d65780601f10620001aa57610100808354040283529160200191620001d6565b820191906000526020600020905b815481529060010190602001808311620001b857829003601f168201915b5050505050905090565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200020857600080fd5b81516001600160401b0380821115620002255762000225620001e0565b604051601f8301601f19908116603f01168101908282118183101715620002505762000250620001e0565b816040528381526020925086838588010111156200026d57600080fd5b600091505b8382101562000291578582018301518183018401529082019062000272565b83821115620002a35760008385830101525b9695505050505050565b600080600060608486031215620002c357600080fd5b83516001600160401b0380821115620002db57600080fd5b620002e987838801620001f6565b945060208601519150808211156200030057600080fd5b506200030f86828701620001f6565b925050604084015160ff811681146200032757600080fd5b809150509250925092565b600181811c908216806200034757607f821691505b6020821081036200036857634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620003bc57600081815260208120601f850160051c81016020861015620003975750805b601f850160051c820191505b81811015620003b857828155600101620003a3565b5050505b505050565b81516001600160401b03811115620003dd57620003dd620001e0565b620003f581620003ee845462000332565b846200036e565b602080601f8311600181146200042d5760008415620004145750858301515b600019600386901b1c1916600185901b178555620003b8565b600085815260208120601f198616915b828110156200045e578886015182559484019460019091019084016200043d565b50858210156200047d5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60805160a051611088620004ba60003960006104690152600081816102f9015261043301526110886000f3fe608060405234801561001057600080fd5b50600436106101375760003560e01c806370a08231116100b8578063a457c2d71161007c578063a457c2d7146102ce578063a9059cbb146102e1578063cd0d0096146102f4578063d505accf1461031b578063dd62ed3e1461032e578063ffa1ad741461034157600080fd5b806370a082311461023f5780637ecebe001461026857806395d89b41146102885780639dc29fac14610290578063a3c573eb146102a357600080fd5b806330adf81f116100ff57806330adf81f146101c9578063313ce567146101f05780633644e5151461020f578063395093511461021757806340c10f191461022a57600080fd5b806306fdde031461013c578063095ea7b31461015a57806318160ddd1461017d57806320606b701461018f57806323b872dd146101b6575b600080fd5b610144610361565b6040516101519190610dc2565b60405180910390f35b61016d610168366004610e33565b6103f3565b6040519015158152602001610151565b6002545b604051908152602001610151565b6101817f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81565b61016d6101c4366004610e5d565b61040b565b6101817f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b600554600160a01b900460ff1660405160ff9091168152602001610151565b61018161042f565b61016d610225366004610e33565b61048b565b61023d610238366004610e33565b6104ad565b005b61018161024d366004610e99565b6001600160a01b031660009081526020819052604090205490565b610181610276366004610e99565b60066020526000908152604090205481565b6101446104ee565b61023d61029e366004610e33565b6104fd565b6005546102b6906001600160a01b031681565b6040516001600160a01b039091168152602001610151565b61016d6102dc366004610e33565b610531565b61016d6102ef366004610e33565b6105ac565b6101817f000000000000000000000000000000000000000000000000000000000000000081565b61023d610329366004610ebb565b6105ba565b61018161033c366004610f2e565b6107f5565b610144604051806040016040528060018152602001603160f81b81525081565b60606003805461037090610f61565b80601f016020809104026020016040519081016040528092919081815260200182805461039c90610f61565b80156103e95780601f106103be576101008083540402835291602001916103e9565b820191906000526020600020905b8154815290600101906020018083116103cc57829003601f168201915b5050505050905090565b600033610401818585610820565b5060019392505050565b600033610419858285610945565b6104248585856109bf565b506001949350505050565b60007f000000000000000000000000000000000000000000000000000000000000000046146104665761046146610b51565b905090565b507f000000000000000000000000000000000000000000000000000000000000000090565b60003361040181858561049e83836107f5565b6104a89190610fb1565b610820565b6005546001600160a01b031633146104e05760405162461bcd60e51b81526004016104d790610fc9565b60405180910390fd5b6104ea8282610bfd565b5050565b60606004805461037090610f61565b6005546001600160a01b031633146105275760405162461bcd60e51b81526004016104d790610fc9565b6104ea8282610caa565b6000338161053f82866107f5565b90508381101561059f5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016104d7565b6104248286868403610820565b6000336104018185856109bf565b834211156106165760405162461bcd60e51b8152602060048201526024808201527f546f6b656e577261707065643a3a7065726d69743a20457870697265642070656044820152631c9b5a5d60e21b60648201526084016104d7565b6001600160a01b038716600090815260066020526040812080547f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918a918a918a91908661066383611019565b909155506040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e00160405160208183030381529060405280519060200120905060006106c161042f565b60405161190160f01b602082015260228101919091526042810183905260620160408051601f198184030181528282528051602091820120600080855291840180845281905260ff89169284019290925260608301879052608083018690529092509060019060a0016020604051602081039080840390855afa15801561074c573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116158015906107825750896001600160a01b0316816001600160a01b0316145b6107de5760405162461bcd60e51b815260206004820152602760248201527f546f6b656e577261707065643a3a7065726d69743a20496e76616c6964207369604482015266676e617475726560c81b60648201526084016104d7565b6107e98a8a8a610820565b50505050505050505050565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166108825760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016104d7565b6001600160a01b0382166108e35760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016104d7565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b600061095184846107f5565b905060001981146109b957818110156109ac5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016104d7565b6109b98484848403610820565b50505050565b6001600160a01b038316610a235760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016104d7565b6001600160a01b038216610a855760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016104d7565b6001600160a01b03831660009081526020819052604090205481811015610afd5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016104d7565b6001600160a01b0384811660008181526020818152604080832087870390559387168083529184902080548701905592518581529092600080516020611033833981519152910160405180910390a36109b9565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f610b7c610361565b805160209182012060408051808201825260018152603160f81b90840152805192830193909352918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060820152608081018390523060a082015260c001604051602081830303815290604052805190602001209050919050565b6001600160a01b038216610c535760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016104d7565b8060026000828254610c659190610fb1565b90915550506001600160a01b03821660008181526020818152604080832080548601905551848152600080516020611033833981519152910160405180910390a35050565b6001600160a01b038216610d0a5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016104d7565b6001600160a01b03821660009081526020819052604090205481811015610d7e5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016104d7565b6001600160a01b0383166000818152602081815260408083208686039055600280548790039055518581529192916000805160206110338339815191529101610938565b600060208083528351808285015260005b81811015610def57858101830151858201604001528201610dd3565b81811115610e01576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b0381168114610e2e57600080fd5b919050565b60008060408385031215610e4657600080fd5b610e4f83610e17565b946020939093013593505050565b600080600060608486031215610e7257600080fd5b610e7b84610e17565b9250610e8960208501610e17565b9150604084013590509250925092565b600060208284031215610eab57600080fd5b610eb482610e17565b9392505050565b600080600080600080600060e0888a031215610ed657600080fd5b610edf88610e17565b9650610eed60208901610e17565b95506040880135945060608801359350608088013560ff81168114610f1157600080fd5b9699959850939692959460a0840135945060c09093013592915050565b60008060408385031215610f4157600080fd5b610f4a83610e17565b9150610f5860208401610e17565b90509250929050565b600181811c90821680610f7557607f821691505b602082108103610f9557634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60008219821115610fc457610fc4610f9b565b500190565b60208082526030908201527f546f6b656e577261707065643a3a6f6e6c794272696467653a204e6f7420506f60408201526f6c79676f6e5a6b45564d42726964676560801b606082015260800190565b60006001820161102b5761102b610f9b565b506001019056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212208b7986f78e961ad6c0885b86b24ce427045be98073c1f3d7fe18180542ab873564736f6c634300080f0033506f6c79676f6e5a6b45564d4272696467653a3a5f7665726966794c6561663a506f6c79676f6e5a6b45564d4272696467653a3a62726964676541737365743aa264697066735822122062be758f85eced237f3de1b441a326dd10663d44821178dc699a7c83ca60affa64736f6c634300080f0033", + "bytecode": "0x608060405234801561001057600080fd5b50614b99806100206000396000f3fe608060405260043610620001af5760003560e01c80637b6323c111620000e9578063bab161bf1162000090578063bab161bf1462000525578063d02103ca146200055f578063d96a15f71462000581578063dbc169761462000598578063ed6be5c914620005b0578063ee25560b14620005c7578063f2fde38b14620005f8578063ff634ed7146200061d57600080fd5b80637b6323c1146200041a57806381b1c174146200043f5780638da5cb5b146200047957806391e57e2d14620004995780639e34070f14620004b1578063a08e8a0814620004d6578063aaa13cc2146200050057600080fd5b8063318aee3d116200015a578063318aee3d14620002c557806334ac9cf214620003345780633ae0504714620003565780633e197043146200036e578063463855491462000393578063647c576c14620003b8578063715018a614620003dd5780637524b83814620003f557600080fd5b80630871e97114620001b457806315064c9614620001cd5780632072f6c514620001fe57806322e95f2c14620002165780632b5e42e714620002545780632c3f58cd14620002795780632dfdf0b5146200029e575b600080fd5b620001cb620001c536600462002784565b62000634565b005b348015620001da57600080fd5b50602254620001e99060ff1681565b60405190151581526020015b60405180910390f35b3480156200020b57600080fd5b50620001cb620006c9565b3480156200022357600080fd5b506200023b6200023536600462002810565b62000702565b6040516001600160a01b039091168152602001620001f5565b3480156200026157600080fd5b50620001cb620002733660046200284c565b62000755565b3480156200028657600080fd5b50620001cb6200029836600462002866565b62000764565b348015620002ab57600080fd5b50620002b660215481565b604051908152602001620001f5565b348015620002d257600080fd5b506200030f620002e43660046200288b565b60256020526000908152604090205463ffffffff81169064010000000090046001600160a01b031682565b6040805163ffffffff90931683526001600160a01b03909116602083015201620001f5565b3480156200034157600080fd5b506027546200023b906001600160a01b031681565b3480156200036357600080fd5b50620002b662000790565b3480156200037b57600080fd5b50620002b66200038d366004620028bb565b62000883565b348015620003a057600080fd5b50620001cb620003b236600462002a91565b62000910565b348015620003c557600080fd5b50620001cb620003d736600462002b77565b62000ab6565b348015620003ea57600080fd5b50620001cb62000c2b565b3480156200040257600080fd5b50620001e96200041436600462002bc7565b62000c41565b3480156200042757600080fd5b50620001cb6200043936600462002a91565b62000d3f565b3480156200044c57600080fd5b506200023b6200045e3660046200284c565b6024602052600090815260409020546001600160a01b031681565b3480156200048657600080fd5b50605a546001600160a01b03166200023b565b348015620004a657600080fd5b50620002b6608c5481565b348015620004be57600080fd5b50620001e9620004d03660046200284c565b620011a8565b348015620004e357600080fd5b50620004ed600081565b60405160ff9091168152602001620001f5565b3480156200050d57600080fd5b506200023b6200051f36600462002c2b565b620011ed565b3480156200053257600080fd5b506022546200054990610100900463ffffffff1681565b60405163ffffffff9091168152602001620001f5565b3480156200056c57600080fd5b506026546200023b906001600160a01b031681565b620001cb6200059236600462002cde565b62001304565b348015620005a557600080fd5b50620001cb620014b6565b348015620005bd57600080fd5b5062000549600081565b348015620005d457600080fd5b50620002b6620005e63660046200284c565b60236020526000908152604090205481565b3480156200060557600080fd5b50620001cb620006173660046200288b565b620014ed565b3480156200062a57600080fd5b50620004ed600181565b608c54341115620006b15760405162461bcd60e51b8152602060048201526047602482015260008051602062004b4483398151915260448201527f2043616e6e6f7420627269646765206d6f7265207468616e206d6178457468656064820152667242726964676560c81b608482015260a4015b60405180910390fd5b620006c18686868686866200156c565b505050505050565b6027546001600160a01b03163314620006f65760405162461bcd60e51b8152600401620006a89062002d45565b62000700620019dd565b565b60006024600084846040516020016200071d92919062002da2565b60408051601f19818403018152918152815160209283012083529082019290925201600020546001600160a01b031690505b92915050565b6200075f62001a3b565b608c55565b6200076e62001a3b565b6022805463ffffffff9092166101000264ffffffff0019909216919091179055565b602154600090819081805b60208110156200087a5782600116600103620007fb5760018160208110620007c757620007c762002dcc565b0154604080516020810192909252810185905260600160405160208183030381529060405280519060200120935062000828565b60408051602081018690529081018390526060016040516020818303038152906040528051906020012093505b6200083560028462002e0e565b60408051602081018590529081018490529093506060016040516020818303038152906040528051906020012091508080620008719062002e25565b9150506200079b565b50919392505050565b6040516001600160f81b031960f889901b1660208201526001600160e01b031960e088811b821660218401526001600160601b0319606089811b821660258601529188901b909216603984015285901b16603d8201526051810183905260718101829052600090609101604051602081830303815290604052805190602001209050979650505050505050565b60225460ff1615620009365760405162461bcd60e51b8152600401620006a89062002e41565b6200094c8a8a8a8a8a8a8a8a8a8a600162001a97565b6200095d8963ffffffff1662001d1c565b6000836001600160a01b031683878985604051602401620009819392919062002f06565b60408051601f198184030181529181526020820180516001600160e01b0316630c035af960e11b17905251620009b8919062002f41565b60006040518083038185875af1925050503d8060008114620009f7576040519150601f19603f3d011682016040523d82523d6000602084013e620009fc565b606091505b505090508062000a685760405162461bcd60e51b815260206004820152603060248201527f506f6c79676f6e5a6b45564d4272696467653a3a636c61696d4d65737361676560448201526f0e8813595cdcd859d94819985a5b195960821b6064820152608401620006a8565b7f25308c93ceeed162da955b3f7ce3e3f93606579e40fb92029faa9efe275459838a8888878760405162000aa195949392919062002f5f565b60405180910390a15050505050505050505050565b600054610100900460ff161580801562000ad75750600054600160ff909116105b8062000af35750303b15801562000af3575060005460ff166001145b62000b585760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401620006a8565b6000805460ff19166001179055801562000b7c576000805461ff0019166101001790555b6022805463ffffffff86166101000264ffffffff0019909116179055602680546001600160a01b038086166001600160a01b03199283161790925560278054928516929091169190911790556703782dace9d90000608c5562000bde62001d5e565b801562000c25576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b62000c3562001a3b565b62000700600062001dd1565b60008463ffffffff8416825b602081101562000d30578160011660010362000cba5786818151811062000c785762000c7862002dcc565b60200260200101518360405160200162000c9c929190918252602082015260400190565b60405160208183030381529060405280519060200120925062000d0c565b8287828151811062000cd05762000cd062002dcc565b602002602001015160405160200162000cf3929190918252602082015260400190565b6040516020818303038152906040528051906020012092505b62000d1960028362002e0e565b91508062000d278162002e25565b91505062000c4d565b5050821490505b949350505050565b60225460ff161562000d655760405162461bcd60e51b8152600401620006a89062002e41565b62000d7b8a8a8a8a8a8a8a8a8a8a600062001a97565b62000d8c8963ffffffff1662001d1c565b6001600160a01b03851662000e8357604080516000808252602082019092526001600160a01b03851690849060405162000dc7919062002f41565b60006040518083038185875af1925050503d806000811462000e06576040519150601f19603f3d011682016040523d82523d6000602084013e62000e0b565b606091505b505090508062000e7c5760405162461bcd60e51b815260206004820152603560248201527f506f6c79676f6e5a6b45564d4272696467653a3a636c61696d41737365743a20604482015274115d1a195c881d1c985b9cd9995c8819985a5b1959605a1b6064820152608401620006a8565b506200115b565b60225463ffffffff61010090910481169087160362000eb85762000eb26001600160a01b038616848462001e23565b6200115b565b6000868660405160200162000ecf92919062002da2565b60408051601f198184030181529181528151602092830120600081815260249093529120549091506001600160a01b031680620010f35760008060008580602001905181019062000f21919062002fe2565b92509250925060008584848460405162000f3b90620026ee565b62000f499392919062003057565b8190604051809103906000f590508015801562000f6a573d6000803e3d6000fd5b506040516340c10f1960e01b81529091506001600160a01b038216906340c10f199062000f9e908c908c9060040162003094565b600060405180830381600087803b15801562000fb957600080fd5b505af115801562000fce573d6000803e3d6000fd5b50505050806024600088815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060405180604001604052808d63ffffffff1681526020018c6001600160a01b031681525060256000836001600160a01b03166001600160a01b0316815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a8154816001600160a01b0302191690836001600160a01b031602179055509050507f490e59a1701b938786ac72570a1efeac994a3dbe96e2e883e19e902ace6e6a398c8c838a604051620010e19493929190620030ad565b60405180910390a15050505062001158565b6040516340c10f1960e01b81526001600160a01b038216906340c10f199062001123908890889060040162003094565b600060405180830381600087803b1580156200113e57600080fd5b505af115801562001153573d6000803e3d6000fd5b505050505b50505b7f25308c93ceeed162da955b3f7ce3e3f93606579e40fb92029faa9efe2754598389878786866040516200119495949392919062002f5f565b60405180910390a150505050505050505050565b600080620011b96101008462002e0e565b90506000620011cb61010085620030f1565b60009283526023602052604090922054600190921b9182169091149392505050565b60008088886040516020016200120592919062002da2565b604051602081830303815290604052805190602001209050600060ff60f81b3083604051806020016200123890620026ee565b601f1982820381018352601f90910116604081905262001265908d908d908d908d908d9060200162003131565b60408051601f198184030181529082905262001285929160200162003172565b60405160208183030381529060405280519060200120604051602001620012de94939291906001600160f81b031994909416845260609290921b6001600160601b03191660018401526015830152603582015260550190565b60408051808303601f1901815291905280516020909101209a9950505050505050505050565b60225460ff16156200132a5760405162461bcd60e51b8152600401620006a89062002e41565b60225463ffffffff610100909104811690841603620013b25760405162461bcd60e51b815260206004820152603f60248201527f506f6c79676f6e5a6b45564d4272696467653a3a6272696467654d657373616760448201527f653a2044657374696e6174696f6e2063616e6e6f7420626520697473656c66006064820152608401620006a8565b7f501781209a1f8899323b96b4ef08b168df93e0a90c673d1e4cce39366cb62f9b6001602260019054906101000a900463ffffffff16338686348760215460405162001406989796959493929190620031a5565b60405180910390a1620014436200143d6001602260019054906101000a900463ffffffff1633878734888051906020012062000883565b62001e82565b6026546001600160a01b03166333d6247d6200145e62000790565b6040518263ffffffff1660e01b81526004016200147d91815260200190565b600060405180830381600087803b1580156200149857600080fd5b505af1158015620014ad573d6000803e3d6000fd5b50505050505050565b6027546001600160a01b03163314620014e35760405162461bcd60e51b8152600401620006a89062002d45565b6200070062001fce565b620014f762001a3b565b6001600160a01b0381166200155e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401620006a8565b620015698162001dd1565b50565b60225460ff1615620015925760405162461bcd60e51b8152600401620006a89062002e41565b60225463ffffffff610100909104811690861603620016095760405162461bcd60e51b815260206004820152603d602482015260008051602062004b4483398151915260448201527f2044657374696e6174696f6e2063616e6e6f7420626520697473656c660000006064820152608401620006a8565b60008060606001600160a01b0389166200169b57853414620016915760405162461bcd60e51b81526020600482015260446024820181905260008051602062004b44833981519152908201527f20416d6f756e7420646f6573206e6f74206d61746368206d6573736167652e76606482015263616c756560e01b608482015260a401620006a8565b60009150620018fd565b6001600160a01b03808a1660009081526025602090815260409182902082518084019093525463ffffffff81168352640100000000900490921691810182905290156200175a57604051632770a7eb60e21b81526001600160a01b038b1690639dc29fac90620017129033908b9060040162003094565b600060405180830381600087803b1580156200172d57600080fd5b505af115801562001742573d6000803e3d6000fd5b505050508060200151935080600001519250620018fb565b84156200176f576200176f8a8888886200207d565b620017866001600160a01b038b1633308a620024a1565b899350602260019054906101000a900463ffffffff169250896001600160a01b03166306fdde036040518163ffffffff1660e01b8152600401600060405180830381865afa158015620017dd573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001807919081019062003212565b8a6001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa15801562001846573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001870919081019062003212565b8b6001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015620018af573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620018d591906200324a565b604051602001620018e99392919062003057565b60405160208183030381529060405291505b505b7f501781209a1f8899323b96b4ef08b168df93e0a90c673d1e4cce39366cb62f9b600083858b8b8b876021546040516200193f989796959493929190620031a5565b60405180910390a1620019646200143d600084868c8c8c888051906020012062000883565b6026546001600160a01b03166333d6247d6200197f62000790565b6040518263ffffffff1660e01b81526004016200199e91815260200190565b600060405180830381600087803b158015620019b957600080fd5b505af1158015620019ce573d6000803e3d6000fd5b50505050505050505050505050565b60225460ff161562001a035760405162461bcd60e51b8152600401620006a89062002e41565b6022805460ff191660011790556040517f2261efe5aef6fedc1fd1550b25facc9181745623049c7901287030b9ad1a549790600090a1565b605a546001600160a01b03163314620007005760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401620006a8565b62001aa88a63ffffffff16620011a8565b1562001aff5760405162461bcd60e51b8152602060048201526030602482015260008051602062004b2483398151915260448201526f08105b1c9958591e4818db185a5b595960821b6064820152608401620006a8565b6026546040805160208082018d90528183018c9052825180830384018152606083019384905280519101206312bd9b1960e11b90925260648101919091526000916001600160a01b03169063257b3632906084016020604051808303816000875af115801562001b73573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001b9991906200326a565b90508060000362001bfc5760405162461bcd60e51b8152602060048201526037602482015260008051602062004b248339815191526044820152760811db1bd8985b115e1a5d149bdbdd081a5b9d985b1a59604a1b6064820152608401620006a8565b60225463ffffffff878116610100909204161462001c7e5760405162461bcd60e51b8152602060048201526043602482015260008051602062004b2483398151915260448201527f2044657374696e6174696f6e206e6574776f726b20646f6573206e6f74206d616064820152620e8c6d60eb1b608482015260a401620006a8565b602254600090610100900463ffffffff1662001c9c57508862001c9f565b50895b62001cc462001cbb848b8b8b8b8b8b8051906020012062000883565b8e8e8462000c41565b620019ce5760405162461bcd60e51b8152602060048201526032602482015260008051602062004b248339815191526044820152711024b73b30b634b21039b6ba10383937b7b360711b6064820152608401620006a8565b600062001d2c6101008362002e0e565b9050600062001d3e61010084620030f1565b6000928352602360205260409092208054600190931b9092179091555050565b600054610100900460ff1662001dcb5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401620006a8565b62000700335b605a80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b62001e7d8363a9059cbb60e01b848460405160240162001e4592919062003094565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152620024db565b505050565b80600162001e936020600262003381565b62001e9f91906200338f565b6021541062001f045760405162461bcd60e51b815260206004820152602a60248201527f4465706f736974436f6e74726163743a5f6465706f7369743a204d65726b6c65604482015269081d1c995948199d5b1b60b21b6064820152608401620006a8565b60016021600082825462001f199190620033a9565b909155505060215460005b602081101562001fc3578160011660010362001f5957826001826020811062001f515762001f5162002dcc565b015550505050565b6001816020811062001f6f5762001f6f62002dcc565b0154604080516020810192909252810184905260600160405160208183030381529060405280519060200120925060028262001fac919062002e0e565b91508062001fba8162002e25565b91505062001f24565b5062001e7d620033c4565b60225460ff16620020485760405162461bcd60e51b815260206004820152603b60248201527f456d657267656e63794d616e616765723a3a6966456d657267656e637953746160448201527f74653a206f6e6c7920696620656d657267656e637920737461746500000000006064820152608401620006a8565b6022805460ff191690556040517f1e5e34eea33501aecf2ebec9fe0e884a40804275ea7fe10b2ba084c8374308b390600090a1565b6000620020c083838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250620025b492505050565b9050632afa533160e01b6001600160e01b0319821601620022b5576000808080808080620020f2896004818d620033da565b81019062002101919062003406565b9650965096509650965096509650336001600160a01b0316876001600160a01b031614620021435760405162461bcd60e51b8152600401620006a89062003461565b6001600160a01b03861630146200216e5760405162461bcd60e51b8152600401620006a890620034be565b8a8514620021e15760405162461bcd60e51b815260206004820152603960248201527f506f6c79676f6e5a6b45564d4272696467653a3a5f7065726d69743a205065726044820152780dad2e840c2dadeeadce840c8decae640dcdee840dac2e8c6d603b1b6064820152608401620006a8565b604080516001600160a01b0389811660248301528881166044830152606482018890526084820187905260ff861660a483015260c4820185905260e48083018590528351808403909101815261010490920183526020820180516001600160e01b031663d505accf60e01b1790529151918e169162002261919062002f41565b6000604051808303816000865af19150503d8060008114620022a0576040519150601f19603f3d011682016040523d82523d6000602084013e620022a5565b606091505b505050505050505050506200249a565b6001600160e01b031981166323f2ebc360e21b146200232b5760405162461bcd60e51b815260206004820152602b60248201527f506f6c79676f6e5a6b45564d4272696467653a3a5f7065726d69743a204e6f7460448201526a081d985b1a590818d85b1b60aa1b6064820152608401620006a8565b600080808080808080620023438a6004818e620033da565b81019062002352919062003520565b97509750975097509750975097509750336001600160a01b0316886001600160a01b031614620023965760405162461bcd60e51b8152600401620006a89062003461565b6001600160a01b0387163014620023c15760405162461bcd60e51b8152600401620006a890620034be565b604080516001600160a01b038a811660248301528981166044830152606482018990526084820188905286151560a483015260ff861660c483015260e482018590526101048083018590528351808403909101815261012490920183526020820180516001600160e01b03166323f2ebc360e21b1790529151918f16916200244a919062002f41565b6000604051808303816000865af19150503d806000811462002489576040519150601f19603f3d011682016040523d82523d6000602084013e6200248e565b606091505b50505050505050505050505b5050505050565b6040516001600160a01b038085166024830152831660448201526064810182905262000c259085906323b872dd60e01b9060840162001e45565b600062002532826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316620025bb9092919063ffffffff16565b80519091501562001e7d5780806020019051810190620025539190620035ac565b62001e7d5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401620006a8565b6020015190565b606062000d37848460008585600080866001600160a01b03168587604051620025e5919062002f41565b60006040518083038185875af1925050503d806000811462002624576040519150601f19603f3d011682016040523d82523d6000602084013e62002629565b606091505b50915091506200263c8783838762002647565b979650505050505050565b60608315620026bb578251600003620026b3576001600160a01b0385163b620026b35760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401620006a8565b508162000d37565b62000d378383815115620026d25781518083602001fd5b8060405162461bcd60e51b8152600401620006a89190620035cc565b61154280620035e283390190565b6001600160a01b03811681146200156957600080fd5b80356200271f81620026fc565b919050565b803563ffffffff811681146200271f57600080fd5b60008083601f8401126200274c57600080fd5b5081356001600160401b038111156200276457600080fd5b6020830191508360208285010111156200277d57600080fd5b9250929050565b60008060008060008060a087890312156200279e57600080fd5b8635620027ab81620026fc565b9550620027bb6020880162002724565b94506040870135620027cd81620026fc565b93506060870135925060808701356001600160401b03811115620027f057600080fd5b620027fe89828a0162002739565b979a9699509497509295939492505050565b600080604083850312156200282457600080fd5b6200282f8362002724565b915060208301356200284181620026fc565b809150509250929050565b6000602082840312156200285f57600080fd5b5035919050565b6000602082840312156200287957600080fd5b620028848262002724565b9392505050565b6000602082840312156200289e57600080fd5b81356200288481620026fc565b60ff811681146200156957600080fd5b600080600080600080600060e0888a031215620028d757600080fd5b8735620028e481620028ab565b9650620028f46020890162002724565b955060408801356200290681620026fc565b9450620029166060890162002724565b935060808801356200292881620026fc565b9699959850939692959460a0840135945060c09093013592915050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171562002986576200298662002945565b604052919050565b600082601f830112620029a057600080fd5b813560206001600160401b03821115620029be57620029be62002945565b8160051b620029cf8282016200295b565b9283528481018201928281019087851115620029ea57600080fd5b83870192505b848310156200263c57823582529183019190830190620029f0565b60006001600160401b0382111562002a275762002a2762002945565b50601f01601f191660200190565b600082601f83011262002a4757600080fd5b813562002a5e62002a588262002a0b565b6200295b565b81815284602083860101111562002a7457600080fd5b816020850160208301376000918101602001919091529392505050565b6000806000806000806000806000806101408b8d03121562002ab257600080fd5b8a356001600160401b038082111562002aca57600080fd5b62002ad88e838f016200298e565b9b5062002ae860208e0162002724565b9a5060408d0135995060608d0135985062002b0660808e0162002724565b975062002b1660a08e0162002712565b965062002b2660c08e0162002724565b955062002b3660e08e0162002712565b94506101008d013593506101208d013591508082111562002b5657600080fd5b5062002b658d828e0162002a35565b9150509295989b9194979a5092959850565b60008060006060848603121562002b8d57600080fd5b62002b988462002724565b9250602084013562002baa81620026fc565b9150604084013562002bbc81620026fc565b809150509250925092565b6000806000806080858703121562002bde57600080fd5b8435935060208501356001600160401b0381111562002bfc57600080fd5b62002c0a878288016200298e565b93505062002c1b6040860162002724565b9396929550929360600135925050565b600080600080600080600060a0888a03121562002c4757600080fd5b62002c528862002724565b9650602088013562002c6481620026fc565b955060408801356001600160401b038082111562002c8157600080fd5b62002c8f8b838c0162002739565b909750955060608a013591508082111562002ca957600080fd5b5062002cb88a828b0162002739565b909450925050608088013562002cce81620028ab565b8091505092959891949750929550565b60008060006060848603121562002cf457600080fd5b62002cff8462002724565b9250602084013562002d1181620026fc565b915060408401356001600160401b0381111562002d2d57600080fd5b62002d3b8682870162002a35565b9150509250925092565b6020808252603a908201527f506f6c79676f6e5a6b45564d3a3a6f6e6c79506f6c79676f6e5a6b45564d3a2060408201527f6f6e6c7920506f6c79676f6e5a6b45564d20636f6e7472616374000000000000606082015260800190565b60e09290921b6001600160e01b031916825260601b6001600160601b031916600482015260180190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60008262002e205762002e2062002de2565b500490565b60006001820162002e3a5762002e3a62002df8565b5060010190565b60208082526042908201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960408201527f53746174653a206f6e6c79206966206e6f7420656d657267656e637920737461606082015261746560f01b608082015260a00190565b60005b8381101562002ec657818101518382015260200162002eac565b8381111562000c255750506000910152565b6000815180845262002ef281602086016020860162002ea9565b601f01601f19169290920160200192915050565b6001600160a01b038416815263ffffffff8316602082015260606040820181905260009062002f389083018462002ed8565b95945050505050565b6000825162002f5581846020870162002ea9565b9190910192915050565b63ffffffff95861681529390941660208401526001600160a01b039182166040840152166060820152608081019190915260a00190565b600082601f83011262002fa857600080fd5b815162002fb962002a588262002a0b565b81815284602083860101111562002fcf57600080fd5b62000d3782602083016020870162002ea9565b60008060006060848603121562002ff857600080fd5b83516001600160401b03808211156200301057600080fd5b6200301e8783880162002f96565b945060208601519150808211156200303557600080fd5b50620030448682870162002f96565b925050604084015162002bbc81620028ab565b6060815260006200306c606083018662002ed8565b828103602084015262003080818662002ed8565b91505060ff83166040830152949350505050565b6001600160a01b03929092168252602082015260400190565b63ffffffff851681526001600160a01b03848116602083015283166040820152608060608201819052600090620030e79083018462002ed8565b9695505050505050565b60008262003103576200310362002de2565b500690565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6060815260006200314760608301878962003108565b82810360208401526200315c81868862003108565b91505060ff831660408301529695505050505050565b600083516200318681846020880162002ea9565b8351908301906200319c81836020880162002ea9565b01949350505050565b60ff8916815263ffffffff88811660208301526001600160a01b03888116604084015287821660608401528616608083015260a0820185905261010060c08301819052600091620031f98483018762002ed8565b925080851660e085015250509998505050505050505050565b6000602082840312156200322557600080fd5b81516001600160401b038111156200323c57600080fd5b62000d378482850162002f96565b6000602082840312156200325d57600080fd5b81516200288481620028ab565b6000602082840312156200327d57600080fd5b5051919050565b600181815b80851115620032c5578160001904821115620032a957620032a962002df8565b80851615620032b757918102915b93841c939080029062003289565b509250929050565b600082620032de575060016200074f565b81620032ed575060006200074f565b8160018114620033065760028114620033115762003331565b60019150506200074f565b60ff84111562003325576200332562002df8565b50506001821b6200074f565b5060208310610133831016604e8410600b841016171562003356575081810a6200074f565b62003362838362003284565b806000190482111562003379576200337962002df8565b029392505050565b6000620028848383620032cd565b600082821015620033a457620033a462002df8565b500390565b60008219821115620033bf57620033bf62002df8565b500190565b634e487b7160e01b600052600160045260246000fd5b60008085851115620033eb57600080fd5b83861115620033f957600080fd5b5050820193919092039150565b600080600080600080600060e0888a0312156200342257600080fd5b87356200342f81620026fc565b965060208801356200344181620026fc565b9550604088013594506060880135935060808801356200292881620028ab565b6020808252603c908201527f506f6c79676f6e5a6b45564d4272696467653a3a5f7065726d69743a2050657260408201527f6d6974206f776e6572206d757374206265207468652073656e64657200000000606082015260800190565b60208082526033908201527f506f6c79676f6e5a6b45564d4272696467653a3a5f7065726d69743a205370656040820152726e646572206d7573742062652027746869732760681b606082015260800190565b80151581146200156957600080fd5b600080600080600080600080610100898b0312156200353e57600080fd5b88356200354b81620026fc565b975060208901356200355d81620026fc565b9650604089013595506060890135945060808901356200357d8162003511565b935060a08901356200358f81620028ab565b979a969950949793969295929450505060c08201359160e0013590565b600060208284031215620035bf57600080fd5b8151620028848162003511565b60208152600062002884602083018462002ed856fe60c06040523480156200001157600080fd5b5060405162001542380380620015428339810160408190526200003491620002ad565b82826003620000448382620003c1565b506004620000538282620003c1565b5050600580546001600160a81b0319163360ff60a01b191617600160a01b60ff851602179055504660808190526200008b9062000098565b60a052506200048d915050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f620000c562000146565b805160209182012060408051808201825260018152603160f81b90840152805192830193909352918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060820152608081018390523060a082015260c001604051602081830303815290604052805190602001209050919050565b606060038054620001579062000332565b80601f0160208091040260200160405190810160405280929190818152602001828054620001859062000332565b8015620001d65780601f10620001aa57610100808354040283529160200191620001d6565b820191906000526020600020905b815481529060010190602001808311620001b857829003601f168201915b5050505050905090565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200020857600080fd5b81516001600160401b0380821115620002255762000225620001e0565b604051601f8301601f19908116603f01168101908282118183101715620002505762000250620001e0565b816040528381526020925086838588010111156200026d57600080fd5b600091505b8382101562000291578582018301518183018401529082019062000272565b83821115620002a35760008385830101525b9695505050505050565b600080600060608486031215620002c357600080fd5b83516001600160401b0380821115620002db57600080fd5b620002e987838801620001f6565b945060208601519150808211156200030057600080fd5b506200030f86828701620001f6565b925050604084015160ff811681146200032757600080fd5b809150509250925092565b600181811c908216806200034757607f821691505b6020821081036200036857634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620003bc57600081815260208120601f850160051c81016020861015620003975750805b601f850160051c820191505b81811015620003b857828155600101620003a3565b5050505b505050565b81516001600160401b03811115620003dd57620003dd620001e0565b620003f581620003ee845462000332565b846200036e565b602080601f8311600181146200042d5760008415620004145750858301515b600019600386901b1c1916600185901b178555620003b8565b600085815260208120601f198616915b828110156200045e578886015182559484019460019091019084016200043d565b50858210156200047d5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60805160a051611088620004ba60003960006104690152600081816102f9015261043301526110886000f3fe608060405234801561001057600080fd5b50600436106101375760003560e01c806370a08231116100b8578063a457c2d71161007c578063a457c2d7146102ce578063a9059cbb146102e1578063cd0d0096146102f4578063d505accf1461031b578063dd62ed3e1461032e578063ffa1ad741461034157600080fd5b806370a082311461023f5780637ecebe001461026857806395d89b41146102885780639dc29fac14610290578063a3c573eb146102a357600080fd5b806330adf81f116100ff57806330adf81f146101c9578063313ce567146101f05780633644e5151461020f578063395093511461021757806340c10f191461022a57600080fd5b806306fdde031461013c578063095ea7b31461015a57806318160ddd1461017d57806320606b701461018f57806323b872dd146101b6575b600080fd5b610144610361565b6040516101519190610dc2565b60405180910390f35b61016d610168366004610e33565b6103f3565b6040519015158152602001610151565b6002545b604051908152602001610151565b6101817f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81565b61016d6101c4366004610e5d565b61040b565b6101817f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b600554600160a01b900460ff1660405160ff9091168152602001610151565b61018161042f565b61016d610225366004610e33565b61048b565b61023d610238366004610e33565b6104ad565b005b61018161024d366004610e99565b6001600160a01b031660009081526020819052604090205490565b610181610276366004610e99565b60066020526000908152604090205481565b6101446104ee565b61023d61029e366004610e33565b6104fd565b6005546102b6906001600160a01b031681565b6040516001600160a01b039091168152602001610151565b61016d6102dc366004610e33565b610531565b61016d6102ef366004610e33565b6105ac565b6101817f000000000000000000000000000000000000000000000000000000000000000081565b61023d610329366004610ebb565b6105ba565b61018161033c366004610f2e565b6107f5565b610144604051806040016040528060018152602001603160f81b81525081565b60606003805461037090610f61565b80601f016020809104026020016040519081016040528092919081815260200182805461039c90610f61565b80156103e95780601f106103be576101008083540402835291602001916103e9565b820191906000526020600020905b8154815290600101906020018083116103cc57829003601f168201915b5050505050905090565b600033610401818585610820565b5060019392505050565b600033610419858285610945565b6104248585856109bf565b506001949350505050565b60007f000000000000000000000000000000000000000000000000000000000000000046146104665761046146610b51565b905090565b507f000000000000000000000000000000000000000000000000000000000000000090565b60003361040181858561049e83836107f5565b6104a89190610fb1565b610820565b6005546001600160a01b031633146104e05760405162461bcd60e51b81526004016104d790610fc9565b60405180910390fd5b6104ea8282610bfd565b5050565b60606004805461037090610f61565b6005546001600160a01b031633146105275760405162461bcd60e51b81526004016104d790610fc9565b6104ea8282610caa565b6000338161053f82866107f5565b90508381101561059f5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016104d7565b6104248286868403610820565b6000336104018185856109bf565b834211156106165760405162461bcd60e51b8152602060048201526024808201527f546f6b656e577261707065643a3a7065726d69743a20457870697265642070656044820152631c9b5a5d60e21b60648201526084016104d7565b6001600160a01b038716600090815260066020526040812080547f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918a918a918a91908661066383611019565b909155506040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e00160405160208183030381529060405280519060200120905060006106c161042f565b60405161190160f01b602082015260228101919091526042810183905260620160408051601f198184030181528282528051602091820120600080855291840180845281905260ff89169284019290925260608301879052608083018690529092509060019060a0016020604051602081039080840390855afa15801561074c573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116158015906107825750896001600160a01b0316816001600160a01b0316145b6107de5760405162461bcd60e51b815260206004820152602760248201527f546f6b656e577261707065643a3a7065726d69743a20496e76616c6964207369604482015266676e617475726560c81b60648201526084016104d7565b6107e98a8a8a610820565b50505050505050505050565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166108825760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016104d7565b6001600160a01b0382166108e35760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016104d7565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b600061095184846107f5565b905060001981146109b957818110156109ac5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016104d7565b6109b98484848403610820565b50505050565b6001600160a01b038316610a235760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016104d7565b6001600160a01b038216610a855760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016104d7565b6001600160a01b03831660009081526020819052604090205481811015610afd5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016104d7565b6001600160a01b0384811660008181526020818152604080832087870390559387168083529184902080548701905592518581529092600080516020611033833981519152910160405180910390a36109b9565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f610b7c610361565b805160209182012060408051808201825260018152603160f81b90840152805192830193909352918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060820152608081018390523060a082015260c001604051602081830303815290604052805190602001209050919050565b6001600160a01b038216610c535760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016104d7565b8060026000828254610c659190610fb1565b90915550506001600160a01b03821660008181526020818152604080832080548601905551848152600080516020611033833981519152910160405180910390a35050565b6001600160a01b038216610d0a5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016104d7565b6001600160a01b03821660009081526020819052604090205481811015610d7e5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016104d7565b6001600160a01b0383166000818152602081815260408083208686039055600280548790039055518581529192916000805160206110338339815191529101610938565b600060208083528351808285015260005b81811015610def57858101830151858201604001528201610dd3565b81811115610e01576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b0381168114610e2e57600080fd5b919050565b60008060408385031215610e4657600080fd5b610e4f83610e17565b946020939093013593505050565b600080600060608486031215610e7257600080fd5b610e7b84610e17565b9250610e8960208501610e17565b9150604084013590509250925092565b600060208284031215610eab57600080fd5b610eb482610e17565b9392505050565b600080600080600080600060e0888a031215610ed657600080fd5b610edf88610e17565b9650610eed60208901610e17565b95506040880135945060608801359350608088013560ff81168114610f1157600080fd5b9699959850939692959460a0840135945060c09093013592915050565b60008060408385031215610f4157600080fd5b610f4a83610e17565b9150610f5860208401610e17565b90509250929050565b600181811c90821680610f7557607f821691505b602082108103610f9557634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60008219821115610fc457610fc4610f9b565b500190565b60208082526030908201527f546f6b656e577261707065643a3a6f6e6c794272696467653a204e6f7420506f60408201526f6c79676f6e5a6b45564d42726964676560801b606082015260800190565b60006001820161102b5761102b610f9b565b506001019056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212208b7986f78e961ad6c0885b86b24ce427045be98073c1f3d7fe18180542ab873564736f6c634300080f0033506f6c79676f6e5a6b45564d4272696467653a3a5f7665726966794c6561663a506f6c79676f6e5a6b45564d4272696467653a3a62726964676541737365743aa2646970667358221220b4188492b941be8b8f4c8bba04a5ae4675396b3b72db0237c8fba438dd1b12bc64736f6c634300080f0033", + "deployedBytecode": "0x608060405260043610620001af5760003560e01c80637b6323c111620000e9578063bab161bf1162000090578063bab161bf1462000525578063d02103ca146200055f578063d96a15f71462000581578063dbc169761462000598578063ed6be5c914620005b0578063ee25560b14620005c7578063f2fde38b14620005f8578063ff634ed7146200061d57600080fd5b80637b6323c1146200041a57806381b1c174146200043f5780638da5cb5b146200047957806391e57e2d14620004995780639e34070f14620004b1578063a08e8a0814620004d6578063aaa13cc2146200050057600080fd5b8063318aee3d116200015a578063318aee3d14620002c557806334ac9cf214620003345780633ae0504714620003565780633e197043146200036e578063463855491462000393578063647c576c14620003b8578063715018a614620003dd5780637524b83814620003f557600080fd5b80630871e97114620001b457806315064c9614620001cd5780632072f6c514620001fe57806322e95f2c14620002165780632b5e42e714620002545780632c3f58cd14620002795780632dfdf0b5146200029e575b600080fd5b620001cb620001c536600462002784565b62000634565b005b348015620001da57600080fd5b50602254620001e99060ff1681565b60405190151581526020015b60405180910390f35b3480156200020b57600080fd5b50620001cb620006c9565b3480156200022357600080fd5b506200023b6200023536600462002810565b62000702565b6040516001600160a01b039091168152602001620001f5565b3480156200026157600080fd5b50620001cb620002733660046200284c565b62000755565b3480156200028657600080fd5b50620001cb6200029836600462002866565b62000764565b348015620002ab57600080fd5b50620002b660215481565b604051908152602001620001f5565b348015620002d257600080fd5b506200030f620002e43660046200288b565b60256020526000908152604090205463ffffffff81169064010000000090046001600160a01b031682565b6040805163ffffffff90931683526001600160a01b03909116602083015201620001f5565b3480156200034157600080fd5b506027546200023b906001600160a01b031681565b3480156200036357600080fd5b50620002b662000790565b3480156200037b57600080fd5b50620002b66200038d366004620028bb565b62000883565b348015620003a057600080fd5b50620001cb620003b236600462002a91565b62000910565b348015620003c557600080fd5b50620001cb620003d736600462002b77565b62000ab6565b348015620003ea57600080fd5b50620001cb62000c2b565b3480156200040257600080fd5b50620001e96200041436600462002bc7565b62000c41565b3480156200042757600080fd5b50620001cb6200043936600462002a91565b62000d3f565b3480156200044c57600080fd5b506200023b6200045e3660046200284c565b6024602052600090815260409020546001600160a01b031681565b3480156200048657600080fd5b50605a546001600160a01b03166200023b565b348015620004a657600080fd5b50620002b6608c5481565b348015620004be57600080fd5b50620001e9620004d03660046200284c565b620011a8565b348015620004e357600080fd5b50620004ed600081565b60405160ff9091168152602001620001f5565b3480156200050d57600080fd5b506200023b6200051f36600462002c2b565b620011ed565b3480156200053257600080fd5b506022546200054990610100900463ffffffff1681565b60405163ffffffff9091168152602001620001f5565b3480156200056c57600080fd5b506026546200023b906001600160a01b031681565b620001cb6200059236600462002cde565b62001304565b348015620005a557600080fd5b50620001cb620014b6565b348015620005bd57600080fd5b5062000549600081565b348015620005d457600080fd5b50620002b6620005e63660046200284c565b60236020526000908152604090205481565b3480156200060557600080fd5b50620001cb620006173660046200288b565b620014ed565b3480156200062a57600080fd5b50620004ed600181565b608c54341115620006b15760405162461bcd60e51b8152602060048201526047602482015260008051602062004b4483398151915260448201527f2043616e6e6f7420627269646765206d6f7265207468616e206d6178457468656064820152667242726964676560c81b608482015260a4015b60405180910390fd5b620006c18686868686866200156c565b505050505050565b6027546001600160a01b03163314620006f65760405162461bcd60e51b8152600401620006a89062002d45565b62000700620019dd565b565b60006024600084846040516020016200071d92919062002da2565b60408051601f19818403018152918152815160209283012083529082019290925201600020546001600160a01b031690505b92915050565b6200075f62001a3b565b608c55565b6200076e62001a3b565b6022805463ffffffff9092166101000264ffffffff0019909216919091179055565b602154600090819081805b60208110156200087a5782600116600103620007fb5760018160208110620007c757620007c762002dcc565b0154604080516020810192909252810185905260600160405160208183030381529060405280519060200120935062000828565b60408051602081018690529081018390526060016040516020818303038152906040528051906020012093505b6200083560028462002e0e565b60408051602081018590529081018490529093506060016040516020818303038152906040528051906020012091508080620008719062002e25565b9150506200079b565b50919392505050565b6040516001600160f81b031960f889901b1660208201526001600160e01b031960e088811b821660218401526001600160601b0319606089811b821660258601529188901b909216603984015285901b16603d8201526051810183905260718101829052600090609101604051602081830303815290604052805190602001209050979650505050505050565b60225460ff1615620009365760405162461bcd60e51b8152600401620006a89062002e41565b6200094c8a8a8a8a8a8a8a8a8a8a600162001a97565b6200095d8963ffffffff1662001d1c565b6000836001600160a01b031683878985604051602401620009819392919062002f06565b60408051601f198184030181529181526020820180516001600160e01b0316630c035af960e11b17905251620009b8919062002f41565b60006040518083038185875af1925050503d8060008114620009f7576040519150601f19603f3d011682016040523d82523d6000602084013e620009fc565b606091505b505090508062000a685760405162461bcd60e51b815260206004820152603060248201527f506f6c79676f6e5a6b45564d4272696467653a3a636c61696d4d65737361676560448201526f0e8813595cdcd859d94819985a5b195960821b6064820152608401620006a8565b7f25308c93ceeed162da955b3f7ce3e3f93606579e40fb92029faa9efe275459838a8888878760405162000aa195949392919062002f5f565b60405180910390a15050505050505050505050565b600054610100900460ff161580801562000ad75750600054600160ff909116105b8062000af35750303b15801562000af3575060005460ff166001145b62000b585760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401620006a8565b6000805460ff19166001179055801562000b7c576000805461ff0019166101001790555b6022805463ffffffff86166101000264ffffffff0019909116179055602680546001600160a01b038086166001600160a01b03199283161790925560278054928516929091169190911790556703782dace9d90000608c5562000bde62001d5e565b801562000c25576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b62000c3562001a3b565b62000700600062001dd1565b60008463ffffffff8416825b602081101562000d30578160011660010362000cba5786818151811062000c785762000c7862002dcc565b60200260200101518360405160200162000c9c929190918252602082015260400190565b60405160208183030381529060405280519060200120925062000d0c565b8287828151811062000cd05762000cd062002dcc565b602002602001015160405160200162000cf3929190918252602082015260400190565b6040516020818303038152906040528051906020012092505b62000d1960028362002e0e565b91508062000d278162002e25565b91505062000c4d565b5050821490505b949350505050565b60225460ff161562000d655760405162461bcd60e51b8152600401620006a89062002e41565b62000d7b8a8a8a8a8a8a8a8a8a8a600062001a97565b62000d8c8963ffffffff1662001d1c565b6001600160a01b03851662000e8357604080516000808252602082019092526001600160a01b03851690849060405162000dc7919062002f41565b60006040518083038185875af1925050503d806000811462000e06576040519150601f19603f3d011682016040523d82523d6000602084013e62000e0b565b606091505b505090508062000e7c5760405162461bcd60e51b815260206004820152603560248201527f506f6c79676f6e5a6b45564d4272696467653a3a636c61696d41737365743a20604482015274115d1a195c881d1c985b9cd9995c8819985a5b1959605a1b6064820152608401620006a8565b506200115b565b60225463ffffffff61010090910481169087160362000eb85762000eb26001600160a01b038616848462001e23565b6200115b565b6000868660405160200162000ecf92919062002da2565b60408051601f198184030181529181528151602092830120600081815260249093529120549091506001600160a01b031680620010f35760008060008580602001905181019062000f21919062002fe2565b92509250925060008584848460405162000f3b90620026ee565b62000f499392919062003057565b8190604051809103906000f590508015801562000f6a573d6000803e3d6000fd5b506040516340c10f1960e01b81529091506001600160a01b038216906340c10f199062000f9e908c908c9060040162003094565b600060405180830381600087803b15801562000fb957600080fd5b505af115801562000fce573d6000803e3d6000fd5b50505050806024600088815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060405180604001604052808d63ffffffff1681526020018c6001600160a01b031681525060256000836001600160a01b03166001600160a01b0316815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a8154816001600160a01b0302191690836001600160a01b031602179055509050507f490e59a1701b938786ac72570a1efeac994a3dbe96e2e883e19e902ace6e6a398c8c838a604051620010e19493929190620030ad565b60405180910390a15050505062001158565b6040516340c10f1960e01b81526001600160a01b038216906340c10f199062001123908890889060040162003094565b600060405180830381600087803b1580156200113e57600080fd5b505af115801562001153573d6000803e3d6000fd5b505050505b50505b7f25308c93ceeed162da955b3f7ce3e3f93606579e40fb92029faa9efe2754598389878786866040516200119495949392919062002f5f565b60405180910390a150505050505050505050565b600080620011b96101008462002e0e565b90506000620011cb61010085620030f1565b60009283526023602052604090922054600190921b9182169091149392505050565b60008088886040516020016200120592919062002da2565b604051602081830303815290604052805190602001209050600060ff60f81b3083604051806020016200123890620026ee565b601f1982820381018352601f90910116604081905262001265908d908d908d908d908d9060200162003131565b60408051601f198184030181529082905262001285929160200162003172565b60405160208183030381529060405280519060200120604051602001620012de94939291906001600160f81b031994909416845260609290921b6001600160601b03191660018401526015830152603582015260550190565b60408051808303601f1901815291905280516020909101209a9950505050505050505050565b60225460ff16156200132a5760405162461bcd60e51b8152600401620006a89062002e41565b60225463ffffffff610100909104811690841603620013b25760405162461bcd60e51b815260206004820152603f60248201527f506f6c79676f6e5a6b45564d4272696467653a3a6272696467654d657373616760448201527f653a2044657374696e6174696f6e2063616e6e6f7420626520697473656c66006064820152608401620006a8565b7f501781209a1f8899323b96b4ef08b168df93e0a90c673d1e4cce39366cb62f9b6001602260019054906101000a900463ffffffff16338686348760215460405162001406989796959493929190620031a5565b60405180910390a1620014436200143d6001602260019054906101000a900463ffffffff1633878734888051906020012062000883565b62001e82565b6026546001600160a01b03166333d6247d6200145e62000790565b6040518263ffffffff1660e01b81526004016200147d91815260200190565b600060405180830381600087803b1580156200149857600080fd5b505af1158015620014ad573d6000803e3d6000fd5b50505050505050565b6027546001600160a01b03163314620014e35760405162461bcd60e51b8152600401620006a89062002d45565b6200070062001fce565b620014f762001a3b565b6001600160a01b0381166200155e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401620006a8565b620015698162001dd1565b50565b60225460ff1615620015925760405162461bcd60e51b8152600401620006a89062002e41565b60225463ffffffff610100909104811690861603620016095760405162461bcd60e51b815260206004820152603d602482015260008051602062004b4483398151915260448201527f2044657374696e6174696f6e2063616e6e6f7420626520697473656c660000006064820152608401620006a8565b60008060606001600160a01b0389166200169b57853414620016915760405162461bcd60e51b81526020600482015260446024820181905260008051602062004b44833981519152908201527f20416d6f756e7420646f6573206e6f74206d61746368206d6573736167652e76606482015263616c756560e01b608482015260a401620006a8565b60009150620018fd565b6001600160a01b03808a1660009081526025602090815260409182902082518084019093525463ffffffff81168352640100000000900490921691810182905290156200175a57604051632770a7eb60e21b81526001600160a01b038b1690639dc29fac90620017129033908b9060040162003094565b600060405180830381600087803b1580156200172d57600080fd5b505af115801562001742573d6000803e3d6000fd5b505050508060200151935080600001519250620018fb565b84156200176f576200176f8a8888886200207d565b620017866001600160a01b038b1633308a620024a1565b899350602260019054906101000a900463ffffffff169250896001600160a01b03166306fdde036040518163ffffffff1660e01b8152600401600060405180830381865afa158015620017dd573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001807919081019062003212565b8a6001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa15801562001846573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001870919081019062003212565b8b6001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015620018af573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620018d591906200324a565b604051602001620018e99392919062003057565b60405160208183030381529060405291505b505b7f501781209a1f8899323b96b4ef08b168df93e0a90c673d1e4cce39366cb62f9b600083858b8b8b876021546040516200193f989796959493929190620031a5565b60405180910390a1620019646200143d600084868c8c8c888051906020012062000883565b6026546001600160a01b03166333d6247d6200197f62000790565b6040518263ffffffff1660e01b81526004016200199e91815260200190565b600060405180830381600087803b158015620019b957600080fd5b505af1158015620019ce573d6000803e3d6000fd5b50505050505050505050505050565b60225460ff161562001a035760405162461bcd60e51b8152600401620006a89062002e41565b6022805460ff191660011790556040517f2261efe5aef6fedc1fd1550b25facc9181745623049c7901287030b9ad1a549790600090a1565b605a546001600160a01b03163314620007005760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401620006a8565b62001aa88a63ffffffff16620011a8565b1562001aff5760405162461bcd60e51b8152602060048201526030602482015260008051602062004b2483398151915260448201526f08105b1c9958591e4818db185a5b595960821b6064820152608401620006a8565b6026546040805160208082018d90528183018c9052825180830384018152606083019384905280519101206312bd9b1960e11b90925260648101919091526000916001600160a01b03169063257b3632906084016020604051808303816000875af115801562001b73573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001b9991906200326a565b90508060000362001bfc5760405162461bcd60e51b8152602060048201526037602482015260008051602062004b248339815191526044820152760811db1bd8985b115e1a5d149bdbdd081a5b9d985b1a59604a1b6064820152608401620006a8565b60225463ffffffff878116610100909204161462001c7e5760405162461bcd60e51b8152602060048201526043602482015260008051602062004b2483398151915260448201527f2044657374696e6174696f6e206e6574776f726b20646f6573206e6f74206d616064820152620e8c6d60eb1b608482015260a401620006a8565b602254600090610100900463ffffffff1662001c9c57508862001c9f565b50895b62001cc462001cbb848b8b8b8b8b8b8051906020012062000883565b8e8e8462000c41565b620019ce5760405162461bcd60e51b8152602060048201526032602482015260008051602062004b248339815191526044820152711024b73b30b634b21039b6ba10383937b7b360711b6064820152608401620006a8565b600062001d2c6101008362002e0e565b9050600062001d3e61010084620030f1565b6000928352602360205260409092208054600190931b9092179091555050565b600054610100900460ff1662001dcb5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401620006a8565b62000700335b605a80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b62001e7d8363a9059cbb60e01b848460405160240162001e4592919062003094565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152620024db565b505050565b80600162001e936020600262003381565b62001e9f91906200338f565b6021541062001f045760405162461bcd60e51b815260206004820152602a60248201527f4465706f736974436f6e74726163743a5f6465706f7369743a204d65726b6c65604482015269081d1c995948199d5b1b60b21b6064820152608401620006a8565b60016021600082825462001f199190620033a9565b909155505060215460005b602081101562001fc3578160011660010362001f5957826001826020811062001f515762001f5162002dcc565b015550505050565b6001816020811062001f6f5762001f6f62002dcc565b0154604080516020810192909252810184905260600160405160208183030381529060405280519060200120925060028262001fac919062002e0e565b91508062001fba8162002e25565b91505062001f24565b5062001e7d620033c4565b60225460ff16620020485760405162461bcd60e51b815260206004820152603b60248201527f456d657267656e63794d616e616765723a3a6966456d657267656e637953746160448201527f74653a206f6e6c7920696620656d657267656e637920737461746500000000006064820152608401620006a8565b6022805460ff191690556040517f1e5e34eea33501aecf2ebec9fe0e884a40804275ea7fe10b2ba084c8374308b390600090a1565b6000620020c083838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250620025b492505050565b9050632afa533160e01b6001600160e01b0319821601620022b5576000808080808080620020f2896004818d620033da565b81019062002101919062003406565b9650965096509650965096509650336001600160a01b0316876001600160a01b031614620021435760405162461bcd60e51b8152600401620006a89062003461565b6001600160a01b03861630146200216e5760405162461bcd60e51b8152600401620006a890620034be565b8a8514620021e15760405162461bcd60e51b815260206004820152603960248201527f506f6c79676f6e5a6b45564d4272696467653a3a5f7065726d69743a205065726044820152780dad2e840c2dadeeadce840c8decae640dcdee840dac2e8c6d603b1b6064820152608401620006a8565b604080516001600160a01b0389811660248301528881166044830152606482018890526084820187905260ff861660a483015260c4820185905260e48083018590528351808403909101815261010490920183526020820180516001600160e01b031663d505accf60e01b1790529151918e169162002261919062002f41565b6000604051808303816000865af19150503d8060008114620022a0576040519150601f19603f3d011682016040523d82523d6000602084013e620022a5565b606091505b505050505050505050506200249a565b6001600160e01b031981166323f2ebc360e21b146200232b5760405162461bcd60e51b815260206004820152602b60248201527f506f6c79676f6e5a6b45564d4272696467653a3a5f7065726d69743a204e6f7460448201526a081d985b1a590818d85b1b60aa1b6064820152608401620006a8565b600080808080808080620023438a6004818e620033da565b81019062002352919062003520565b97509750975097509750975097509750336001600160a01b0316886001600160a01b031614620023965760405162461bcd60e51b8152600401620006a89062003461565b6001600160a01b0387163014620023c15760405162461bcd60e51b8152600401620006a890620034be565b604080516001600160a01b038a811660248301528981166044830152606482018990526084820188905286151560a483015260ff861660c483015260e482018590526101048083018590528351808403909101815261012490920183526020820180516001600160e01b03166323f2ebc360e21b1790529151918f16916200244a919062002f41565b6000604051808303816000865af19150503d806000811462002489576040519150601f19603f3d011682016040523d82523d6000602084013e6200248e565b606091505b50505050505050505050505b5050505050565b6040516001600160a01b038085166024830152831660448201526064810182905262000c259085906323b872dd60e01b9060840162001e45565b600062002532826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316620025bb9092919063ffffffff16565b80519091501562001e7d5780806020019051810190620025539190620035ac565b62001e7d5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401620006a8565b6020015190565b606062000d37848460008585600080866001600160a01b03168587604051620025e5919062002f41565b60006040518083038185875af1925050503d806000811462002624576040519150601f19603f3d011682016040523d82523d6000602084013e62002629565b606091505b50915091506200263c8783838762002647565b979650505050505050565b60608315620026bb578251600003620026b3576001600160a01b0385163b620026b35760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401620006a8565b508162000d37565b62000d378383815115620026d25781518083602001fd5b8060405162461bcd60e51b8152600401620006a89190620035cc565b61154280620035e283390190565b6001600160a01b03811681146200156957600080fd5b80356200271f81620026fc565b919050565b803563ffffffff811681146200271f57600080fd5b60008083601f8401126200274c57600080fd5b5081356001600160401b038111156200276457600080fd5b6020830191508360208285010111156200277d57600080fd5b9250929050565b60008060008060008060a087890312156200279e57600080fd5b8635620027ab81620026fc565b9550620027bb6020880162002724565b94506040870135620027cd81620026fc565b93506060870135925060808701356001600160401b03811115620027f057600080fd5b620027fe89828a0162002739565b979a9699509497509295939492505050565b600080604083850312156200282457600080fd5b6200282f8362002724565b915060208301356200284181620026fc565b809150509250929050565b6000602082840312156200285f57600080fd5b5035919050565b6000602082840312156200287957600080fd5b620028848262002724565b9392505050565b6000602082840312156200289e57600080fd5b81356200288481620026fc565b60ff811681146200156957600080fd5b600080600080600080600060e0888a031215620028d757600080fd5b8735620028e481620028ab565b9650620028f46020890162002724565b955060408801356200290681620026fc565b9450620029166060890162002724565b935060808801356200292881620026fc565b9699959850939692959460a0840135945060c09093013592915050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171562002986576200298662002945565b604052919050565b600082601f830112620029a057600080fd5b813560206001600160401b03821115620029be57620029be62002945565b8160051b620029cf8282016200295b565b9283528481018201928281019087851115620029ea57600080fd5b83870192505b848310156200263c57823582529183019190830190620029f0565b60006001600160401b0382111562002a275762002a2762002945565b50601f01601f191660200190565b600082601f83011262002a4757600080fd5b813562002a5e62002a588262002a0b565b6200295b565b81815284602083860101111562002a7457600080fd5b816020850160208301376000918101602001919091529392505050565b6000806000806000806000806000806101408b8d03121562002ab257600080fd5b8a356001600160401b038082111562002aca57600080fd5b62002ad88e838f016200298e565b9b5062002ae860208e0162002724565b9a5060408d0135995060608d0135985062002b0660808e0162002724565b975062002b1660a08e0162002712565b965062002b2660c08e0162002724565b955062002b3660e08e0162002712565b94506101008d013593506101208d013591508082111562002b5657600080fd5b5062002b658d828e0162002a35565b9150509295989b9194979a5092959850565b60008060006060848603121562002b8d57600080fd5b62002b988462002724565b9250602084013562002baa81620026fc565b9150604084013562002bbc81620026fc565b809150509250925092565b6000806000806080858703121562002bde57600080fd5b8435935060208501356001600160401b0381111562002bfc57600080fd5b62002c0a878288016200298e565b93505062002c1b6040860162002724565b9396929550929360600135925050565b600080600080600080600060a0888a03121562002c4757600080fd5b62002c528862002724565b9650602088013562002c6481620026fc565b955060408801356001600160401b038082111562002c8157600080fd5b62002c8f8b838c0162002739565b909750955060608a013591508082111562002ca957600080fd5b5062002cb88a828b0162002739565b909450925050608088013562002cce81620028ab565b8091505092959891949750929550565b60008060006060848603121562002cf457600080fd5b62002cff8462002724565b9250602084013562002d1181620026fc565b915060408401356001600160401b0381111562002d2d57600080fd5b62002d3b8682870162002a35565b9150509250925092565b6020808252603a908201527f506f6c79676f6e5a6b45564d3a3a6f6e6c79506f6c79676f6e5a6b45564d3a2060408201527f6f6e6c7920506f6c79676f6e5a6b45564d20636f6e7472616374000000000000606082015260800190565b60e09290921b6001600160e01b031916825260601b6001600160601b031916600482015260180190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60008262002e205762002e2062002de2565b500490565b60006001820162002e3a5762002e3a62002df8565b5060010190565b60208082526042908201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960408201527f53746174653a206f6e6c79206966206e6f7420656d657267656e637920737461606082015261746560f01b608082015260a00190565b60005b8381101562002ec657818101518382015260200162002eac565b8381111562000c255750506000910152565b6000815180845262002ef281602086016020860162002ea9565b601f01601f19169290920160200192915050565b6001600160a01b038416815263ffffffff8316602082015260606040820181905260009062002f389083018462002ed8565b95945050505050565b6000825162002f5581846020870162002ea9565b9190910192915050565b63ffffffff95861681529390941660208401526001600160a01b039182166040840152166060820152608081019190915260a00190565b600082601f83011262002fa857600080fd5b815162002fb962002a588262002a0b565b81815284602083860101111562002fcf57600080fd5b62000d3782602083016020870162002ea9565b60008060006060848603121562002ff857600080fd5b83516001600160401b03808211156200301057600080fd5b6200301e8783880162002f96565b945060208601519150808211156200303557600080fd5b50620030448682870162002f96565b925050604084015162002bbc81620028ab565b6060815260006200306c606083018662002ed8565b828103602084015262003080818662002ed8565b91505060ff83166040830152949350505050565b6001600160a01b03929092168252602082015260400190565b63ffffffff851681526001600160a01b03848116602083015283166040820152608060608201819052600090620030e79083018462002ed8565b9695505050505050565b60008262003103576200310362002de2565b500690565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6060815260006200314760608301878962003108565b82810360208401526200315c81868862003108565b91505060ff831660408301529695505050505050565b600083516200318681846020880162002ea9565b8351908301906200319c81836020880162002ea9565b01949350505050565b60ff8916815263ffffffff88811660208301526001600160a01b03888116604084015287821660608401528616608083015260a0820185905261010060c08301819052600091620031f98483018762002ed8565b925080851660e085015250509998505050505050505050565b6000602082840312156200322557600080fd5b81516001600160401b038111156200323c57600080fd5b62000d378482850162002f96565b6000602082840312156200325d57600080fd5b81516200288481620028ab565b6000602082840312156200327d57600080fd5b5051919050565b600181815b80851115620032c5578160001904821115620032a957620032a962002df8565b80851615620032b757918102915b93841c939080029062003289565b509250929050565b600082620032de575060016200074f565b81620032ed575060006200074f565b8160018114620033065760028114620033115762003331565b60019150506200074f565b60ff84111562003325576200332562002df8565b50506001821b6200074f565b5060208310610133831016604e8410600b841016171562003356575081810a6200074f565b62003362838362003284565b806000190482111562003379576200337962002df8565b029392505050565b6000620028848383620032cd565b600082821015620033a457620033a462002df8565b500390565b60008219821115620033bf57620033bf62002df8565b500190565b634e487b7160e01b600052600160045260246000fd5b60008085851115620033eb57600080fd5b83861115620033f957600080fd5b5050820193919092039150565b600080600080600080600060e0888a0312156200342257600080fd5b87356200342f81620026fc565b965060208801356200344181620026fc565b9550604088013594506060880135935060808801356200292881620028ab565b6020808252603c908201527f506f6c79676f6e5a6b45564d4272696467653a3a5f7065726d69743a2050657260408201527f6d6974206f776e6572206d757374206265207468652073656e64657200000000606082015260800190565b60208082526033908201527f506f6c79676f6e5a6b45564d4272696467653a3a5f7065726d69743a205370656040820152726e646572206d7573742062652027746869732760681b606082015260800190565b80151581146200156957600080fd5b600080600080600080600080610100898b0312156200353e57600080fd5b88356200354b81620026fc565b975060208901356200355d81620026fc565b9650604089013595506060890135945060808901356200357d8162003511565b935060a08901356200358f81620028ab565b979a969950949793969295929450505060c08201359160e0013590565b600060208284031215620035bf57600080fd5b8151620028848162003511565b60208152600062002884602083018462002ed856fe60c06040523480156200001157600080fd5b5060405162001542380380620015428339810160408190526200003491620002ad565b82826003620000448382620003c1565b506004620000538282620003c1565b5050600580546001600160a81b0319163360ff60a01b191617600160a01b60ff851602179055504660808190526200008b9062000098565b60a052506200048d915050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f620000c562000146565b805160209182012060408051808201825260018152603160f81b90840152805192830193909352918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060820152608081018390523060a082015260c001604051602081830303815290604052805190602001209050919050565b606060038054620001579062000332565b80601f0160208091040260200160405190810160405280929190818152602001828054620001859062000332565b8015620001d65780601f10620001aa57610100808354040283529160200191620001d6565b820191906000526020600020905b815481529060010190602001808311620001b857829003601f168201915b5050505050905090565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200020857600080fd5b81516001600160401b0380821115620002255762000225620001e0565b604051601f8301601f19908116603f01168101908282118183101715620002505762000250620001e0565b816040528381526020925086838588010111156200026d57600080fd5b600091505b8382101562000291578582018301518183018401529082019062000272565b83821115620002a35760008385830101525b9695505050505050565b600080600060608486031215620002c357600080fd5b83516001600160401b0380821115620002db57600080fd5b620002e987838801620001f6565b945060208601519150808211156200030057600080fd5b506200030f86828701620001f6565b925050604084015160ff811681146200032757600080fd5b809150509250925092565b600181811c908216806200034757607f821691505b6020821081036200036857634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620003bc57600081815260208120601f850160051c81016020861015620003975750805b601f850160051c820191505b81811015620003b857828155600101620003a3565b5050505b505050565b81516001600160401b03811115620003dd57620003dd620001e0565b620003f581620003ee845462000332565b846200036e565b602080601f8311600181146200042d5760008415620004145750858301515b600019600386901b1c1916600185901b178555620003b8565b600085815260208120601f198616915b828110156200045e578886015182559484019460019091019084016200043d565b50858210156200047d5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60805160a051611088620004ba60003960006104690152600081816102f9015261043301526110886000f3fe608060405234801561001057600080fd5b50600436106101375760003560e01c806370a08231116100b8578063a457c2d71161007c578063a457c2d7146102ce578063a9059cbb146102e1578063cd0d0096146102f4578063d505accf1461031b578063dd62ed3e1461032e578063ffa1ad741461034157600080fd5b806370a082311461023f5780637ecebe001461026857806395d89b41146102885780639dc29fac14610290578063a3c573eb146102a357600080fd5b806330adf81f116100ff57806330adf81f146101c9578063313ce567146101f05780633644e5151461020f578063395093511461021757806340c10f191461022a57600080fd5b806306fdde031461013c578063095ea7b31461015a57806318160ddd1461017d57806320606b701461018f57806323b872dd146101b6575b600080fd5b610144610361565b6040516101519190610dc2565b60405180910390f35b61016d610168366004610e33565b6103f3565b6040519015158152602001610151565b6002545b604051908152602001610151565b6101817f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81565b61016d6101c4366004610e5d565b61040b565b6101817f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b600554600160a01b900460ff1660405160ff9091168152602001610151565b61018161042f565b61016d610225366004610e33565b61048b565b61023d610238366004610e33565b6104ad565b005b61018161024d366004610e99565b6001600160a01b031660009081526020819052604090205490565b610181610276366004610e99565b60066020526000908152604090205481565b6101446104ee565b61023d61029e366004610e33565b6104fd565b6005546102b6906001600160a01b031681565b6040516001600160a01b039091168152602001610151565b61016d6102dc366004610e33565b610531565b61016d6102ef366004610e33565b6105ac565b6101817f000000000000000000000000000000000000000000000000000000000000000081565b61023d610329366004610ebb565b6105ba565b61018161033c366004610f2e565b6107f5565b610144604051806040016040528060018152602001603160f81b81525081565b60606003805461037090610f61565b80601f016020809104026020016040519081016040528092919081815260200182805461039c90610f61565b80156103e95780601f106103be576101008083540402835291602001916103e9565b820191906000526020600020905b8154815290600101906020018083116103cc57829003601f168201915b5050505050905090565b600033610401818585610820565b5060019392505050565b600033610419858285610945565b6104248585856109bf565b506001949350505050565b60007f000000000000000000000000000000000000000000000000000000000000000046146104665761046146610b51565b905090565b507f000000000000000000000000000000000000000000000000000000000000000090565b60003361040181858561049e83836107f5565b6104a89190610fb1565b610820565b6005546001600160a01b031633146104e05760405162461bcd60e51b81526004016104d790610fc9565b60405180910390fd5b6104ea8282610bfd565b5050565b60606004805461037090610f61565b6005546001600160a01b031633146105275760405162461bcd60e51b81526004016104d790610fc9565b6104ea8282610caa565b6000338161053f82866107f5565b90508381101561059f5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016104d7565b6104248286868403610820565b6000336104018185856109bf565b834211156106165760405162461bcd60e51b8152602060048201526024808201527f546f6b656e577261707065643a3a7065726d69743a20457870697265642070656044820152631c9b5a5d60e21b60648201526084016104d7565b6001600160a01b038716600090815260066020526040812080547f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918a918a918a91908661066383611019565b909155506040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e00160405160208183030381529060405280519060200120905060006106c161042f565b60405161190160f01b602082015260228101919091526042810183905260620160408051601f198184030181528282528051602091820120600080855291840180845281905260ff89169284019290925260608301879052608083018690529092509060019060a0016020604051602081039080840390855afa15801561074c573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116158015906107825750896001600160a01b0316816001600160a01b0316145b6107de5760405162461bcd60e51b815260206004820152602760248201527f546f6b656e577261707065643a3a7065726d69743a20496e76616c6964207369604482015266676e617475726560c81b60648201526084016104d7565b6107e98a8a8a610820565b50505050505050505050565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166108825760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016104d7565b6001600160a01b0382166108e35760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016104d7565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b600061095184846107f5565b905060001981146109b957818110156109ac5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016104d7565b6109b98484848403610820565b50505050565b6001600160a01b038316610a235760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016104d7565b6001600160a01b038216610a855760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016104d7565b6001600160a01b03831660009081526020819052604090205481811015610afd5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016104d7565b6001600160a01b0384811660008181526020818152604080832087870390559387168083529184902080548701905592518581529092600080516020611033833981519152910160405180910390a36109b9565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f610b7c610361565b805160209182012060408051808201825260018152603160f81b90840152805192830193909352918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060820152608081018390523060a082015260c001604051602081830303815290604052805190602001209050919050565b6001600160a01b038216610c535760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016104d7565b8060026000828254610c659190610fb1565b90915550506001600160a01b03821660008181526020818152604080832080548601905551848152600080516020611033833981519152910160405180910390a35050565b6001600160a01b038216610d0a5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016104d7565b6001600160a01b03821660009081526020819052604090205481811015610d7e5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016104d7565b6001600160a01b0383166000818152602081815260408083208686039055600280548790039055518581529192916000805160206110338339815191529101610938565b600060208083528351808285015260005b81811015610def57858101830151858201604001528201610dd3565b81811115610e01576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b0381168114610e2e57600080fd5b919050565b60008060408385031215610e4657600080fd5b610e4f83610e17565b946020939093013593505050565b600080600060608486031215610e7257600080fd5b610e7b84610e17565b9250610e8960208501610e17565b9150604084013590509250925092565b600060208284031215610eab57600080fd5b610eb482610e17565b9392505050565b600080600080600080600060e0888a031215610ed657600080fd5b610edf88610e17565b9650610eed60208901610e17565b95506040880135945060608801359350608088013560ff81168114610f1157600080fd5b9699959850939692959460a0840135945060c09093013592915050565b60008060408385031215610f4157600080fd5b610f4a83610e17565b9150610f5860208401610e17565b90509250929050565b600181811c90821680610f7557607f821691505b602082108103610f9557634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60008219821115610fc457610fc4610f9b565b500190565b60208082526030908201527f546f6b656e577261707065643a3a6f6e6c794272696467653a204e6f7420506f60408201526f6c79676f6e5a6b45564d42726964676560801b606082015260800190565b60006001820161102b5761102b610f9b565b506001019056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212208b7986f78e961ad6c0885b86b24ce427045be98073c1f3d7fe18180542ab873564736f6c634300080f0033506f6c79676f6e5a6b45564d4272696467653a3a5f7665726966794c6561663a506f6c79676f6e5a6b45564d4272696467653a3a62726964676541737365743aa2646970667358221220b4188492b941be8b8f4c8bba04a5ae4675396b3b72db0237c8fba438dd1b12bc64736f6c634300080f0033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/compiled-contracts/PolygonZkEVMMock.json b/compiled-contracts/PolygonZkEVMMock.json index 7b28508..fd55885 100644 --- a/compiled-contracts/PolygonZkEVMMock.json +++ b/compiled-contracts/PolygonZkEVMMock.json @@ -1693,8 +1693,8 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b50615f0680620000216000396000f3fe608060405234801561001057600080fd5b50600436106103925760003560e01c806396dc3d39116101e0578063cfa8ed4711610110578063e7a7ed02116100a8578063e7a7ed0214610905578063e8bf92ed1461091f578063eaeb077b14610932578063edc4112114610945578063f14916d614610958578063f2fde38b1461096b578063f851a4401461097e578063f8b823e414610991578063fe16564f1461099a57600080fd5b8063cfa8ed4714610860578063d02103ca1461087a578063d8d1091b1461088d578063d8f54db0146108a0578063d939b315146108b4578063dbc16976146108ce578063e0d17441146108d6578063e11f3f18146108e9578063e217cfd6146108fc57600080fd5b8063ab9fc5ef11610183578063ab9fc5ef14610759578063adc879e914610763578063afd23cbe1461077d578063b4d63f58146107a5578063b6b0b09714610805578063c0cad3021461081f578063c0ed84e014610832578063c89e42df1461083a578063cf1363061461084d57600080fd5b806396dc3d39146106dd57806399f5634e146106f05780639b796760146106f85780639c9f3dfe1461070b5780639eb831b91461071e5780639f0d039d14610726578063a3c573eb1461072e578063aa58bad61461074157600080fd5b80634a910e6a116102c6578063715018a61161025e578063715018a6146105e65780637215541a146105ee57806375c508b3146106015780637fcb365314610614578063837a473814610627578063841b24d7146106955780638b48931e146106af5780638c4a0af7146106b95780638da5cb5b146106cc57600080fd5b80634a910e6a1461052c5780635392c5e01461053f578063542028d51461055f5780635437988d14610567578063574f649e1461057a57806360943d6a1461058d5780636b8616ce146105a05780636ff512cc146105c0578063704b6c02146105d357600080fd5b80632d0889d3116103395780632d0889d314610475578063383b3be81461047f578063394218e9146104925780633c158267146104a5578063423fa856146104b857806345605267146104d2578063458c0477146104ec5780634834a343146104ff5780634a1a89a71461051257600080fd5b80630eaa86ea14610397578063107bf28c146103bd57806310a01a72146103d257806315064c96146103e75780631816b7e51461040457806319d8ac6114610417578063220d7899146104425780632987898314610455575b600080fd5b6103aa6103a5366004614c68565b6109ad565b6040519081526020015b60405180910390f35b6103c5610b7c565b6040516103b49190614d15565b6103e56103e0366004614d57565b610c0a565b005b6065546103f49060ff1681565b60405190151581526020016103b4565b6103e5610412366004614de4565b610e53565b60685461042a906001600160401b031681565b6040516001600160401b0390911681526020016103b4565b6103c5610450366004614e08565b610f74565b606a54610468906001600160a01b031681565b6040516103b49190614e55565b6103aa620493e081565b6103f461048d366004614e69565b611115565b6103e56104a0366004614e69565b61115c565b6103e56104b3366004614fa6565b611318565b60685461042a90600160401b90046001600160401b031681565b60685461042a90600160801b90046001600160401b031681565b60725461042a906001600160401b031681565b6103e561050d366004614d57565b611adf565b60725461042a90600160401b90046001600160401b031681565b6103e561053a366004614e69565b611e27565b6103aa61054d366004614e69565b606d6020526000908152604090205481565b6103c5611edd565b6103e56105753660046150d1565b611eea565b6103aa6105883660046150ee565b611f14565b6103e561059b366004615163565b611f57565b6103aa6105ae366004614e69565b60666020526000908152604090205481565b6103e56105ce3660046150d1565b6122b2565b6103e56105e13660046150d1565b612330565b6103e56123a5565b6103e56105fc366004614e69565b6123b9565b6103e561060f36600461523a565b6125c0565b60695461042a906001600160401b031681565b61066a6106353660046152d8565b6071602052600090815260409020805460018201546002909201546001600160401b0380831693600160401b90930416919084565b604080516001600160401b0395861681529490931660208501529183015260608201526080016103b4565b60725461042a90600160c01b90046001600160401b031681565b61042a62093a8081565b6103e56106c73660046152ff565b61264f565b6033546001600160a01b0316610468565b6103e56106eb366004614e69565b6126c6565b6103aa6126f0565b6103e5610706366004614e69565b6127d8565b6103e5610719366004614e69565b61280d565b6103aa600c81565b6074546103aa565b607054610468906001600160a01b031681565b60655461042a9061010090046001600160401b031681565b61042a6206978081565b606c5461042a90600160a81b90046001600160401b031681565b60655461079290600160481b900461ffff1681565b60405161ffff90911681526020016103b4565b6107e06107b3366004614e69565b606760205260009081526040902080546001909101546001600160401b0380821691600160401b90041683565b604080519384526001600160401b0392831660208501529116908201526060016103b4565b60655461046890600160581b90046001600160a01b031681565b6103e561082d36600461531c565b6129bb565b61042a6129d3565b6103e561084836600461531c565b612a20565b6103e561085b366004614e69565b612a86565b60695461046890600160401b90046001600160a01b031681565b606c54610468906001600160a01b031681565b6103e561089b366004615350565b612b07565b606c546103f490600160a01b900460ff1681565b60725461042a90600160801b90046001600160401b031681565b6103e5612fc6565b6103e56108e4366004615442565b613082565b6103e56108f736600461523a565b6130f4565b61042a6103e881565b60685461042a90600160c01b90046001600160401b031681565b606b54610468906001600160a01b031681565b6103e561094036600461548f565b613238565b6103e5610953366004614d57565b613561565b6103e56109663660046150d1565b613680565b6103e56109793660046150d1565b6136f5565b607354610468906001600160a01b031681565b6103aa60745481565b6103e56109a83660046154d3565b61376b565b60008060006109ba6129d3565b90506001600160401b03881615610a57576072546001600160401b039081169089161115610a035760405162461bcd60e51b81526004016109fa906154ff565b60405180910390fd5b6001600160401b038089166000908152607160205260409020600281015481549094509091898116600160401b9092041614610a515760405162461bcd60e51b81526004016109fa9061557d565b50610ac1565b6001600160401b0387166000908152606d6020526040902054915081610a8f5760405162461bcd60e51b81526004016109fa906155dd565b806001600160401b0316876001600160401b03161115610ac15760405162461bcd60e51b81526004016109fa90615634565b806001600160401b0316866001600160401b031611610af25760405162461bcd60e51b81526004016109fa906156a5565b6000610b018888888689610f74565b90506000600080516020615e91833981519152600283604051610b249190615722565b602060405180830381855afa158015610b41573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190610b64919061573e565b610b6e919061576d565b9a9950505050505050505050565b606f8054610b8990615781565b80601f0160208091040260200160405190810160405280929190818152602001828054610bb590615781565b8015610c025780601f10610bd757610100808354040283529160200191610c02565b820191906000526020600020905b815481529060010190602001808311610be557829003601f168201915b505050505081565b610c1261378d565b600080610c1d6129d3565b90506001600160401b038a1615610cb1576072546001600160401b03908116908b161115610c5d5760405162461bcd60e51b81526004016109fa906154ff565b6001600160401b03808b1660009081526071602052604090206002810154815490945090918b8116600160401b9092041614610cab5760405162461bcd60e51b81526004016109fa9061557d565b50610d1b565b6001600160401b0389166000908152606d6020526040902054915081610ce95760405162461bcd60e51b81526004016109fa906155dd565b806001600160401b0316896001600160401b03161115610d1b5760405162461bcd60e51b81526004016109fa90615634565b806001600160401b0316886001600160401b031611610d4c5760405162461bcd60e51b81526004016109fa906156a5565b6000610d5b8a8a8a868b610f74565b606980546001600160401b0319166001600160401b038c81169182179092556000908152606d602052604090208990556072549192501615610da857607280546001600160801b03191690555b606c546040516333d6247d60e01b8152600481018a90526001600160a01b03909116906333d6247d90602401600060405180830381600087803b158015610dee57600080fd5b505af1158015610e02573d6000803e3d6000fd5b50506040518981523392506001600160401b038c1691507f0c0ce073a7d7b5850c04ccc4b20ee7d3179d5f57d0ac44399565792c0f72fce79060200160405180910390a35050505050505050505050565b6073546001600160a01b03163314610e7d5760405162461bcd60e51b81526004016109fa906157bb565b6103e88161ffff1610158015610e9857506104008161ffff16105b610f1d5760405162461bcd60e51b815260206004820152604a60248201527f506f6c79676f6e5a6b45564d3a3a7365744d756c7469706c696572426174636860448201527f4665653a206e65774d756c7469706c696572426174636846656520696e636f72606482015269726563742072616e676560b01b608482015260a4016109fa565b6065805461ffff60481b1916600160481b61ffff8416908102919091179091556040519081527f7019933d795eba185c180209e8ae8bffbaa25bcef293364687702c31f4d302c5906020015b60405180910390a150565b6001600160401b03808616600081815260676020526040808220549388168252902054606092911580610fa657508115155b61101a576040805162461bcd60e51b81526020600482015260248101919091527f506f6c79676f6e5a6b45564d3a3a676574496e707574536e61726b427974657360448201527f3a206f6c64416363496e7075744861736820646f6573206e6f7420657869737460648201526084016109fa565b8061108f576040805162461bcd60e51b81526020600482015260248101919091527f506f6c79676f6e5a6b45564d3a3a676574496e707574536e61726b427974657360448201527f3a206e6577416363496e7075744861736820646f6573206e6f7420657869737460648201526084016109fa565b606c54604080516001600160601b03193360601b166020820152603481019790975260548701939093526001600160c01b031960c0998a1b81166074880152600160a81b909104891b8116607c870152608486019490945260a485015260c4840194909452509290931b90911660e4830152805180830360cc01815260ec909201905290565b6072546001600160401b038281166000908152607160205260408120549092429261114b92600160801b90920481169116615814565b6001600160401b0316111592915050565b6073546001600160a01b031633146111865760405162461bcd60e51b81526004016109fa906157bb565b62093a806001600160401b038216111561121f5760405162461bcd60e51b815260206004820152604e60248201527f506f6c79676f6e5a6b45564d3a3a73657454727573746564416767726567617460448201527f6f7254696d656f75743a20457863656564206d61782068616c7420616767726560648201526d19d85d1a5bdb881d1a5b595bdd5d60921b608482015260a4016109fa565b60655460ff166112c2576072546001600160401b03600160c01b9091048116908216106112c25760405162461bcd60e51b8152602060048201526044602482018190527f506f6c79676f6e5a6b45564d3a3a736574547275737465644167677265676174908201527f6f7254696d656f75743a204e65772074696d656f7574206d757374206265206c60648201526337bbb2b960e11b608482015260a4016109fa565b607280546001600160c01b0316600160c01b6001600160401b038416908102919091179091556040519081527f1f4fa24c2e4bad19a7f3ec5c5485f70d46c798461c2e684f55bbd0fc661373a190602001610f69565b60655460ff161561133b5760405162461bcd60e51b81526004016109fa9061583f565b606954600160401b90046001600160a01b031633146113c25760405162461bcd60e51b815260206004820152603a60248201527f506f6c79676f6e5a6b45564d3a3a6f6e6c795472757374656453657175656e6360448201527f65723a204f6e6c7920747275737465642073657175656e63657200000000000060648201526084016109fa565b8051806114375760405162461bcd60e51b815260206004820152603d60248201527f506f6c79676f6e5a6b45564d3a3a73657175656e6365426174636865733a204160448201527f74206c65617374206d7573742073657175656e6365203120626174636800000060648201526084016109fa565b6103e881106114b0576040805162461bcd60e51b81526020600482015260248101919091527f506f6c79676f6e5a6b45564d3a3a73657175656e6365426174636865733a204360448201527f616e6e6f742073657175656e63652074686174206d616e79206261746368657360648201526084016109fa565b6068546001600160401b03600160401b82048116600081815260676020526040812054838516949293600160801b90930490921691905b85811015611915576000878281518110611503576115036158a7565b60200260200101519050600081606001516001600160401b03161115611693578361152d816158bd565b94505060008160000151805190602001208260200151836060015160405160200161155a939291906158e3565b60408051601f1981840301815291815281516020928301206001600160401b0388166000908152606690935291205490915081146115ee5760405162461bcd60e51b815260206004820152603d6024820152600080516020615eb183398151915260448201527f6f7263656420626174636865732064617461206d757374206d6174636800000060648201526084016109fa565b81606001516001600160401b031682604001516001600160401b0316101561168d5760405162461bcd60e51b81526020600482015260586024820152600080516020615eb183398151915260448201527f6f7263656420626174636865732074696d657374616d70206d757374206265206064820152773134b3b3b2b91037b91032b8bab0b6103a3430b71036b4b760411b608482015260a4016109fa565b50611808565b6020810151158061171c5750606c5460208201516040516312bd9b1960e11b81526001600160a01b039092169163257b3632916116d69160040190815260200190565b6020604051808303816000875af11580156116f5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611719919061573e565b15155b61178e5760405162461bcd60e51b815260206004820152603a60248201527f506f6c79676f6e5a6b45564d3a3a73657175656e6365426174636865733a204760448201527f6c6f62616c206578697420726f6f74206d75737420657869737400000000000060648201526084016109fa565b805151620493e0116118085760405162461bcd60e51b815260206004820152603a60248201527f506f6c79676f6e5a6b45564d3a3a73657175656e6365426174636865733a205460448201527f72616e73616374696f6e73206279746573206f766572666c6f7700000000000060648201526084016109fa565b856001600160401b031681604001516001600160401b03161015801561183b57504281604001516001600160401b031611155b6118ad5760405162461bcd60e51b815260206004820152603d60248201527f506f6c79676f6e5a6b45564d3a3a73657175656e6365426174636865733a205460448201527f696d657374616d70206d75737420626520696e736964652072616e676500000060648201526084016109fa565b805180516020918201208183015160408085015190516118d4948894939291339101615906565b60405160208183030381529060405280519060200120925084806118f7906158bd565b9550508060400151955050808061190d90615945565b9150506114e7565b506068546001600160401b03600160c01b909104811690831611156119885760405162461bcd60e51b81526020600482015260356024820152600080516020615eb18339815191526044820152746f7263652062617463686573206f766572666c6f7760581b60648201526084016109fa565b6068546000906119a890600160801b90046001600160401b03168461595e565b6119bb906001600160401b031687615986565b60408051606081018252848152426001600160401b03908116602080840191825260688054600160401b9081900485168688019081528c861660008181526067909552979093209551865592516001909501805492519585166001600160801b03199384161795851684029590951790945583548b841691161793029290921767ffffffffffffffff60801b1916600160801b92871692909202919091179055607454909150611a9090339030908490611a75919061599d565b606554600160581b90046001600160a01b03169291906137e7565b611a98613852565b606854604051600160401b9091046001600160401b0316907f303446e6a8cb73c83dff421c0b1d5e5ce0719dab1bff13660fc254e58cc17fce90600090a250505050505050565b60655460ff1615611b025760405162461bcd60e51b81526004016109fa9061583f565b6072546001600160401b038781166000908152606760205260409020600101544292611b3992600160c01b90910481169116615814565b6001600160401b03161115611bc25760405162461bcd60e51b815260206004820152604360248201527f506f6c79676f6e5a6b45564d3a3a766572696679426174636865733a2054727560448201527f737465642061676772656761746f722074696d656f7574206e6f7420657870696064820152621c995960ea1b608482015260a4016109fa565b6103e8611bcf888861595e565b6001600160401b031610611c4b5760405162461bcd60e51b815260206004820152603c60248201527f506f6c79676f6e5a6b45564d3a3a766572696679426174636865733a2043616e60448201527f6e6f74207665726966792074686174206d616e7920626174636865730000000060648201526084016109fa565b611c5b88888888888888886138f2565b611c6486613de3565b607254600160801b90046001600160401b0316600003611d2b57606980546001600160401b0319166001600160401b038881169182179092556000908152606d602052604090208590556072541615611cc857607280546001600160801b03191690555b606c546040516333d6247d60e01b8152600481018790526001600160a01b03909116906333d6247d90602401600060405180830381600087803b158015611d0e57600080fd5b505af1158015611d22573d6000803e3d6000fd5b50505050611ddc565b611d33613852565b607280546001600160401b0316906000611d4c836158bd565b82546001600160401b039182166101009390930a92830292820219169190911790915560408051608081018252428316815289831660208083019182528284018b8152606084018b8152607254871660009081526071909352949091209251835492518616600160401b026001600160801b03199093169516949094171781559151600183015551600290910155505b60405184815233906001600160401b038816907f9c72852172521097ba7e1482e6b44b351323df0155f97f4ea18fcec28e1f5966906020015b60405180910390a35050505050505050565b606a546001600160a01b03163314611ed157611e4281611115565b611ed15760405162461bcd60e51b815260206004820152605460248201527f506f6c79676f6e5a6b45564d3a3a636f6e736f6c696461746550656e64696e6760448201527f53746174653a2050656e64696e67207374617465206973206e6f7420726561646064820152731e481d1bc818994818dbdb9cdbdb1a59185d195960621b608482015260a4016109fa565b611eda81613fc9565b50565b606e8054610b8990615781565b611ef261378d565b606b80546001600160a01b0319166001600160a01b0392909216919091179055565b6000858580519060200120858585604051602001611f36959493929190615906565b60405160208183030381529060405280519060200120905095945050505050565b600054610100900460ff1615808015611f775750600054600160ff909116105b80611f915750303b158015611f91575060005460ff166001145b611ff45760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016109fa565b6000805460ff191660011790558015612017576000805461ff0019166101001790555b606c80546001600160a01b03199081166001600160a01b038c81169190911790925560658054600160581b600160f81b031916600160581b8c851602179055606b805482168a84161790556070805490911691881691909117905561207f60208601866150d1565b607380546001600160a01b0319166001600160a01b03929092169190911790556120af60608601604087016150d1565b606980546001600160a01b0392909216600160401b02600160401b600160e01b03199092169190911790556120ea60c0860160a087016150d1565b606a80546001600160a01b0319166001600160a01b039290921691909117905560008052606d6020527fda90043ba5b4096ba14704bc227ab0d3167da15b887e62ab2e76e37daa71135684905561214760e0860160c08701614e69565b607280546001600160401b0392909216600160c01b026001600160c01b0390921691909117905561217e6040860160208701614e69565b606c80546001600160401b0392909216600160a81b0267ffffffffffffffff60a81b199092169190911790556121ba6080860160608701614e69565b607280546001600160401b0392909216600160801b0267ffffffffffffffff60801b199092169190911790556121f660a08601608087016152ff565b606c8054911515600160a01b0260ff60a01b19909216919091179055606e61221e8482615a02565b50606f61222b8382615a02565b50670de0b6b3a7640000607455606580546affffffffffffffffffff0019166a03ea0000000000000708001790556122616141ad565b80156122a7576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050565b6073546001600160a01b031633146122dc5760405162461bcd60e51b81526004016109fa906157bb565b60698054600160401b600160e01b031916600160401b6001600160a01b038416021790556040517ff54144f9611984021529f814a1cb6a41e22c58351510a0d9f7e822618abb9cc090610f69908390614e55565b6073546001600160a01b0316331461235a5760405162461bcd60e51b81526004016109fa906157bb565b607380546001600160a01b0319166001600160a01b0383161790556040517f5a272403b402d892977df56625f4164ccaf70ca3863991c43ecfe76a6905b0a190610f69908390614e55565b6123ad61378d565b6123b7600061421d565b565b6033546001600160a01b031633146125b85760006123d56129d3565b9050806001600160401b0316826001600160401b03161161244c5760405162461bcd60e51b815260206004820152603c6024820152600080516020615e1183398151915260448201527f746174653a20426174636820616c72656164792076657269666965640000000060648201526084016109fa565b6068546001600160401b03600160401b90910481169083161180159061248e57506001600160401b038083166000908152606760205260409020600101541615155b6125075760405162461bcd60e51b81526020600482015260506024820152600080516020615e1183398151915260448201527f746174653a204261746368206e6f742073657175656e636564206f72206e6f7460648201526f20656e64206f662073657175656e636560801b608482015260a4016109fa565b6001600160401b0380831660009081526067602052604090206001015442916125359162093a809116615814565b6001600160401b031611156125b65760405162461bcd60e51b815260206004820152604d6024820152600080516020615e1183398151915260448201527f746174653a204167677265676174696f6e2068616c742074696d656f7574206960648201526c1cc81b9bdd08195e1c1a5c9959609a1b608482015260a4016109fa565b505b611eda61426f565b60655460ff16156125e35760405162461bcd60e51b81526004016109fa9061583f565b6125f48989898989898989896142df565b6001600160401b0386166000908152606d60209081526040918290205482519081529081018690527f1f44c21118c4603cfb4e1b621dbcfa2b73efcececee2b99b620b2953d33a7010910160405180910390a16122a761426f565b6073546001600160a01b031633146126795760405162461bcd60e51b81526004016109fa906157bb565b606c8054821515600160a01b0260ff60a01b199091161790556040517fbacda50a4a8575be1d91a7ebe29ee45056f3a94f12a2281eb6b43afa33bcefe690610f6990831515815260200190565b6126ce61378d565b606980546001600160401b0319166001600160401b0392909216919091179055565b6065546040516370a0823160e01b81526000918291600160581b9091046001600160a01b0316906370a082319061272b903090600401614e55565b602060405180830381865afa158015612748573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061276c919061573e565b905060006127786129d3565b6068546001600160401b03600160401b82048116916127a891600160801b8204811691600160c01b90041661595e565b6127b29190615814565b6127bc919061595e565b6001600160401b031690506127d18183615ac1565b9250505090565b6127e061378d565b606880546001600160401b03909216600160401b0267ffffffffffffffff60401b19909216919091179055565b6073546001600160a01b031633146128375760405162461bcd60e51b81526004016109fa906157bb565b62093a806001600160401b03821611156128cb5760405162461bcd60e51b815260206004820152604960248201527f506f6c79676f6e5a6b45564d3a3a73657450656e64696e67537461746554696d60448201527f656f75743a20457863656564206d61782068616c74206167677265676174696f6064820152681b881d1a5b595bdd5d60ba1b608482015260a4016109fa565b60655460ff16612960576072546001600160401b03600160801b9091048116908216106129605760405162461bcd60e51b815260206004820152603f60248201527f506f6c79676f6e5a6b45564d3a3a73657450656e64696e67537461746554696d60448201527f656f75743a204e65772074696d656f7574206d757374206265206c6f7765720060648201526084016109fa565b6072805467ffffffffffffffff60801b1916600160801b6001600160401b038416908102919091179091556040519081527fc4121f4e22c69632ebb7cf1f462be0511dc034f999b52013eddfb24aab765c7590602001610f69565b6129c361378d565b606f6129cf8282615a02565b5050565b6072546000906001600160401b031615612a1057506072546001600160401b03908116600090815260716020526040902054600160401b90041690565b506069546001600160401b031690565b6073546001600160a01b03163314612a4a5760405162461bcd60e51b81526004016109fa906157bb565b606e612a568282615a02565b507f6b8f723a4c7a5335cafae8a598a0aa0301be1387c037dccc085b62add6448b2081604051610f699190614d15565b6073546001600160a01b03163314612ab05760405162461bcd60e51b81526004016109fa906157bb565b6065805468ffffffffffffffff0019166101006001600160401b038416908102919091179091556040519081527f03a12f7e53d2a9e31a9e913d85c12c4c38feb92abe003c111329298af088437f90602001610f69565b60655460ff1615612b2a5760405162461bcd60e51b81526004016109fa9061583f565b606c54600160a01b900460ff161515600114612b585760405162461bcd60e51b81526004016109fa90615ad5565b805180612bbb5760405162461bcd60e51b815260206004820152603f6024820152600080516020615e7183398151915260448201527f65733a204d75737420666f726365206174206c6561737420312062617463680060648201526084016109fa565b6103e88110612c2c5760405162461bcd60e51b81526020600482015260436024820152600080516020615e7183398151915260448201527f65733a2043616e6e6f74207665726966792074686174206d616e79206261746360648201526268657360e81b608482015260a4016109fa565b6068546001600160401b03600160c01b8204811691612c54918491600160801b900416615b3e565b1115612cb05760405162461bcd60e51b81526020600482015260376024820152600080516020615e71833981519152604482015276195cce88119bdc98d94818985d18da081a5b9d985b1a59604a1b60648201526084016109fa565b6068546001600160401b03600160401b820481166000818152606760205260408120549193600160801b9004909216915b84811015612ede576000868281518110612cfd57612cfd6158a7565b602002602001015190508380612d12906158bd565b945050600081600001518051906020012082602001518360400151604051602001612d3f939291906158e3565b60408051601f1981840301815291815281516020928301206001600160401b038816600090815260669093529120549091508114612dde5760405162461bcd60e51b81526020600482015260426024820152600080516020615e7183398151915260448201527f65733a20466f7263656420626174636865732064617461206d757374206d61746064820152610c6d60f31b608482015260a4016109fa565b612de9600188615986565b8303612e805742620697808360400151612e039190615814565b6001600160401b03161115612e805760405162461bcd60e51b81526020600482015260496024820152600080516020615e7183398151915260448201527f65733a20466f72636564206261746368206973206e6f7420696e2074696d656f6064820152681d5d081c195c9a5bd960ba1b608482015260a4016109fa565b8151805160209182012081840151604051612ea393889392914291339101615906565b6040516020818303038152906040528051906020012093508580612ec6906158bd565b96505050508080612ed690615945565b915050612ce1565b50606880546001600160401b031916426001600160401b03908116918217808455604080516060810182528681526020808201958652600160401b9384900485168284019081528a861660008181526067909352848320935184559651600193909301805491519387166001600160801b0319909216919091179286168502929092179091558554600160401b600160c01b03191694830267ffffffffffffffff60801b191694909417600160801b88851602179485905551930416917f648a61dd2438f072f5a1960939abd30f37aea80d2e94c9792ad142d3e0a490a49190a25050505050565b60655460ff16612fe85760405162461bcd60e51b81526004016109fa90615b56565b6073546001600160a01b031633146130125760405162461bcd60e51b81526004016109fa906157bb565b607060009054906101000a90046001600160a01b03166001600160a01b031663dbc169766040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561306257600080fd5b505af1158015613076573d6000803e3d6000fd5b505050506123b7614903565b61308a61378d565b604080516060810182529384526001600160401b03928316602080860191825292841685830190815295841660009081526067909352912092518355516001909201805493518216600160401b026001600160801b03199094169290911691909117919091179055565b606a546001600160a01b0316331461311e5760405162461bcd60e51b81526004016109fa90615bb3565b61312f8989898989898989896142df565b606980546001600160401b0319166001600160401b038881169182179092556000908152606d60205260409020859055607254161561317957607280546001600160801b03191690555b606c546040516333d6247d60e01b8152600481018790526001600160a01b03909116906333d6247d90602401600060405180830381600087803b1580156131bf57600080fd5b505af11580156131d3573d6000803e3d6000fd5b5050607280546001600160c01b031661127560c71b179055505060405184815233906001600160401b038816907fcc1b5520188bf1dd3e63f98164b577c4d75c11a619ddea692112f0d1aec4cf729060200160405180910390a3505050505050505050565b60655460ff161561325b5760405162461bcd60e51b81526004016109fa9061583f565b606c54600160a01b900460ff1615156001146132895760405162461bcd60e51b81526004016109fa90615ad5565b600061329460745490565b9050818111156132f95760405162461bcd60e51b815260206004820152602a60248201527f506f6c79676f6e5a6b45564d3a3a666f72636542617463683a204e6f7420656e6044820152696f756768206d6174696360b01b60648201526084016109fa565b620493e083511061336a5760405162461bcd60e51b815260206004820152603560248201527f506f6c79676f6e5a6b45564d3a3a666f72636542617463683a205472616e73616044820152746374696f6e73206279746573206f766572666c6f7760581b60648201526084016109fa565b60655461338990600160581b90046001600160a01b03163330846137e7565b606c5460408051633ed691ef60e01b815290516000926001600160a01b031691633ed691ef9160048083019260209291908290030181865afa1580156133d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133f7919061573e565b60688054919250600160c01b9091046001600160401b031690601861341b836158bd565b91906101000a8154816001600160401b0302191690836001600160401b03160217905550508380519060200120814260405160200161345c939291906158e3565b60408051808303601f190181529181528151602092830120606854600160c01b90046001600160401b03166000908152606690935291205532330361350057606854604080518381523360208201526060918101829052600091810191909152600160c01b9091046001600160401b0316907ff94bb37db835f1ab585ee00041849a09b12cd081d77fa15ca070757619cbc9319060800160405180910390a261355b565b606860189054906101000a90046001600160401b03166001600160401b03167ff94bb37db835f1ab585ee00041849a09b12cd081d77fa15ca070757619cbc93182338760405161355293929190615c10565b60405180910390a25b50505050565b606a546001600160a01b0316331461358b5760405162461bcd60e51b81526004016109fa90615bb3565b61359b88888888888888886138f2565b606980546001600160401b0319166001600160401b038881169182179092556000908152606d6020526040902085905560725416156135e557607280546001600160801b03191690555b606c546040516333d6247d60e01b8152600481018790526001600160a01b03909116906333d6247d90602401600060405180830381600087803b15801561362b57600080fd5b505af115801561363f573d6000803e3d6000fd5b50506040518681523392506001600160401b03891691507f0c0ce073a7d7b5850c04ccc4b20ee7d3179d5f57d0ac44399565792c0f72fce790602001611e15565b6073546001600160a01b031633146136aa5760405162461bcd60e51b81526004016109fa906157bb565b606a80546001600160a01b0319166001600160a01b0383161790556040517f61f8fec29495a3078e9271456f05fb0707fd4e41f7661865f80fc437d06681ca90610f69908390614e55565b6136fd61378d565b6001600160a01b0381166137625760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016109fa565b611eda8161421d565b61377361378d565b6001600160401b03166000908152606d6020526040902055565b6033546001600160a01b031633146123b75760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016109fa565b6040516001600160a01b038085166024830152831660448201526064810182905261355b9085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915261495a565b6072546001600160401b03600160401b82048116911611156123b75760725460009061388f90600160401b90046001600160401b03166001615814565b905061389a81611115565b15611eda576072546000906002906138bc9084906001600160401b031661595e565b6138c69190615c43565b6138d09083615814565b90506138db81611115565b156138e9576129cf81613fc9565b6129cf82613fc9565b6000806138fd6129d3565b90506001600160401b038a1615613a63576072546001600160401b03908116908b1611156139b55760405162461bcd60e51b815260206004820152605960248201527f506f6c79676f6e5a6b45564d3a3a5f766572696679426174636865733a20706560448201527f6e64696e6753746174654e756d206d757374206265206c657373206f7220657160648201527875616c207468616e206c61737450656e64696e67537461746560381b608482015260a4016109fa565b6001600160401b03808b1660009081526071602052604090206002810154815490945090918b8116600160401b9092041614613a5d5760405162461bcd60e51b815260206004820152604d6024820152600080516020615e3183398151915260448201527f69744e756d4261746368206d757374206d61746368207468652070656e64696e60648201526c0ce40e6e8c2e8ca40c4c2e8c6d609b1b608482015260a4016109fa565b50613b89565b6001600160401b0389166000908152606d6020526040902054915081613aed5760405162461bcd60e51b815260206004820152604460248201819052600080516020615e31833981519152908201527f69744e756d426174636820737461746520726f6f7420646f6573206e6f7420656064820152631e1a5cdd60e21b608482015260a4016109fa565b806001600160401b0316896001600160401b03161115613b895760405162461bcd60e51b815260206004820152605e6024820152600080516020615e3183398151915260448201527f69744e756d4261746368206d757374206265206c657373206f7220657175616c60648201527f207468616e2063757272656e744c617374566572696669656442617463680000608482015260a4016109fa565b806001600160401b0316886001600160401b031611613c315760405162461bcd60e51b815260206004820152605860248201527f506f6c79676f6e5a6b45564d3a3a5f766572696679426174636865733a20666960448201527f6e616c4e65774261746368206d75737420626520626967676572207468616e206064820152770c6eae4e4cadce898c2e6e8accae4d2ccd2cac884c2e8c6d60431b608482015260a4016109fa565b6000613c408a8a8a868b610f74565b90506000600080516020615e91833981519152600283604051613c639190615722565b602060405180830381855afa158015613c80573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190613ca3919061573e565b613cad919061576d565b606b546040805160208101825283815290516343753b4d60e01b81529293506001600160a01b03909116916343753b4d91613cf1918b918b918b9190600401615c69565b602060405180830381865afa158015613d0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d329190615ce3565b613d925760405162461bcd60e51b815260206004820152602b60248201527f506f6c79676f6e5a6b45564d3a3a5f766572696679426174636865733a20496e60448201526a3b30b634b210383937b7b360a91b60648201526084016109fa565b613dd533613da0858d61595e565b6001600160401b0316613db16126f0565b613dbb919061599d565b606554600160581b90046001600160a01b03169190614a31565b505050505050505050505050565b6000613ded6129d3565b905081600080613dfd848461595e565b6001600160401b031690505b836001600160401b0316836001600160401b031614613eaf576001600160401b03808416600090815260676020526040902060655460018201549192610100909104811691613e59911642615986565b1115613e94576001810154613e7e90600160401b90046001600160401b03168561595e565b613e91906001600160401b031684615b3e565b92505b60010154600160401b90046001600160401b03169250613e09565b6000613ebb8383615986565b905082811015613f35576000613ed18285615986565b9050600c8111613ee15780613ee4565b600c5b9050613ef181600361599d565b613efc90600a615de4565b606554613f15908390600160481b900461ffff16615de4565b607454613f22919061599d565b613f2c9190615ac1565b60745550613fc1565b6000613f418483615986565b9050600c8111613f515780613f54565b600c5b90506000613f6382600361599d565b613f6e90600a615de4565b606554613f87908490600160481b900461ffff16615de4565b607454613f94919061599d565b613f9e9190615ac1565b905080607454607454613fb1919061599d565b613fbb9190615ac1565b60745550505b505050505050565b6001600160401b03811615801590613ff657506072546001600160401b03600160401b9091048116908216115b801561401157506072546001600160401b0390811690821611155b6140835760405162461bcd60e51b815260206004820152603f60248201527f506f6c79676f6e5a6b45564d3a3a5f636f6e736f6c696461746550656e64696e60448201527f6753746174653a2070656e64696e6753746174654e756d20696e76616c69640060648201526084016109fa565b6001600160401b038181166000818152607160209081526040808320805460698054600160401b928390049098166001600160401b0319909816881790556002820154878652606d90945293829020929092556072805467ffffffffffffffff60401b19169390940292909217909255606c54600183015491516333d6247d60e01b815260048101929092529192916001600160a01b0316906333d6247d90602401600060405180830381600087803b15801561413f57600080fd5b505af1158015614153573d6000803e3d6000fd5b50505050826001600160401b0316816001600160401b03167f328d3c6c0fd6f1be0515e422f2d87e59f25922cbc2233568515a0c4bc3f8510e84600201546040516141a091815260200190565b60405180910390a3505050565b600054610100900460ff166142185760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016109fa565b6123b7335b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b607060009054906101000a90046001600160a01b03166001600160a01b0316632072f6c56040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156142bf57600080fd5b505af11580156142d3573d6000803e3d6000fd5b505050506123b7614a61565b60006001600160401b038a161561444f576072546001600160401b03908116908b1611156143975760405162461bcd60e51b81526020600482015260656024820152600080516020615e5183398151915260448201527f696e6753746174653a2070656e64696e6753746174654e756d206d757374206260648201527f65206c657373206f7220657175616c207468616e206c61737450656e64696e67608482015264537461746560d81b60a482015260c4016109fa565b506001600160401b03808a1660009081526071602052604090206002810154815490928a8116600160401b90920416146144495760405162461bcd60e51b81526020600482015260596024820152600080516020615e5183398151915260448201527f696e6753746174653a20696e69744e756d4261746368206d757374206d6174636064820152780d040e8d0ca40e0cadcc8d2dcce40e6e8c2e8ca40c4c2e8c6d603b1b608482015260a4016109fa565b50614588565b506001600160401b0387166000908152606d6020526040902054806144e35760405162461bcd60e51b81526020600482015260506024820152600080516020615e5183398151915260448201527f696e6753746174653a20696e69744e756d426174636820737461746520726f6f60648201526f1d08191bd95cc81b9bdd08195e1a5cdd60821b608482015260a4016109fa565b6069546001600160401b0390811690891611156145885760405162461bcd60e51b81526020600482015260636024820152600080516020615e5183398151915260448201527f696e6753746174653a20696e69744e756d4261746368206d757374206265206c60648201527f657373206f7220657175616c207468616e206c617374566572696669656442616084820152620e8c6d60eb1b60a482015260c4016109fa565b6072546001600160401b03908116908a16118015906145b85750896001600160401b0316896001600160401b0316115b80156145d957506072546001600160401b03600160401b9091048116908a16115b61464a5760405162461bcd60e51b81526020600482015260486024820152600080516020615e5183398151915260448201527f696e6753746174653a2066696e616c50656e64696e6753746174654e756d20696064820152671b98dbdc9c9958dd60c21b608482015260a4016109fa565b6001600160401b03898116600090815260716020526040902054600160401b90048116908816146147035760405162461bcd60e51b81526020600482015260636024820152600080516020615e5183398151915260448201527f696e6753746174653a2066696e616c4e65774261746368206d7573742062652060648201527f657175616c207468616e2063757272656e744c617374566572696669656442616084820152620e8c6d60eb1b60a482015260c4016109fa565b6000614712898989858a610f74565b90506000600080516020615e918339815191526002836040516147359190615722565b602060405180830381855afa158015614752573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190614775919061573e565b61477f919061576d565b606b546040805160208101825283815290516343753b4d60e01b81529293506001600160a01b03909116916343753b4d916147c3918a918a918a9190600401615c69565b602060405180830381865afa1580156147e0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906148049190615ce3565b61485e5760405162461bcd60e51b81526020600482015260376024820152600080516020615e5183398151915260448201527634b733a9ba30ba329d1024b73b30b634b210383937b7b360491b60648201526084016109fa565b6001600160401b038b16600090815260716020526040902060020154879003613dd55760405162461bcd60e51b815260206004820152605b6024820152600080516020615e5183398151915260448201527f696e6753746174653a2053746f72656420726f6f74206d75737420626520646960648201527f66666572656e74207468616e206e657720737461746520726f6f740000000000608482015260a4016109fa565b60655460ff166149255760405162461bcd60e51b81526004016109fa90615b56565b6065805460ff191690556040517f1e5e34eea33501aecf2ebec9fe0e884a40804275ea7fe10b2ba084c8374308b390600090a1565b60006149af826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316614abc9092919063ffffffff16565b805190915015614a2c57808060200190518101906149cd9190615ce3565b614a2c5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016109fa565b505050565b6040516001600160a01b038316602482015260448101829052614a2c90849063a9059cbb60e01b9060640161381b565b60655460ff1615614a845760405162461bcd60e51b81526004016109fa9061583f565b6065805460ff191660011790556040517f2261efe5aef6fedc1fd1550b25facc9181745623049c7901287030b9ad1a549790600090a1565b6060614acb8484600085614ad3565b949350505050565b606082471015614b345760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016109fa565b600080866001600160a01b03168587604051614b509190615722565b60006040518083038185875af1925050503d8060008114614b8d576040519150601f19603f3d011682016040523d82523d6000602084013e614b92565b606091505b5091509150614ba387838387614bae565b979650505050505050565b60608315614c1d578251600003614c16576001600160a01b0385163b614c165760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016109fa565b5081614acb565b614acb8383815115614c325781518083602001fd5b8060405162461bcd60e51b81526004016109fa9190614d15565b80356001600160401b0381168114614c6357600080fd5b919050565b600080600080600060a08688031215614c8057600080fd5b614c8986614c4c565b9450614c9760208701614c4c565b9350614ca560408701614c4c565b94979396509394606081013594506080013592915050565b60005b83811015614cd8578181015183820152602001614cc0565b8381111561355b5750506000910152565b60008151808452614d01816020860160208601614cbd565b601f01601f19169290920160200192915050565b602081526000614d286020830184614ce9565b9392505050565b8060408101831015614d4057600080fd5b92915050565b8060808101831015614d4057600080fd5b6000806000806000806000806101a0898b031215614d7457600080fd5b614d7d89614c4c565b9750614d8b60208a01614c4c565b9650614d9960408a01614c4c565b95506060890135945060808901359350614db68a60a08b01614d2f565b9250614dc58a60e08b01614d46565b9150614dd58a6101608b01614d2f565b90509295985092959890939650565b600060208284031215614df657600080fd5b813561ffff81168114614d2857600080fd5b600080600080600060a08688031215614e2057600080fd5b614e2986614c4c565b9450614e3760208701614c4c565b94979496505050506040830135926060810135926080909101359150565b6001600160a01b0391909116815260200190565b600060208284031215614e7b57600080fd5b614d2882614c4c565b634e487b7160e01b600052604160045260246000fd5b604051608081016001600160401b0381118282101715614ebc57614ebc614e84565b60405290565b604051606081016001600160401b0381118282101715614ebc57614ebc614e84565b604051601f8201601f191681016001600160401b0381118282101715614f0c57614f0c614e84565b604052919050565b60006001600160401b03821115614f2d57614f2d614e84565b5060051b60200190565b600082601f830112614f4857600080fd5b81356001600160401b03811115614f6157614f61614e84565b614f74601f8201601f1916602001614ee4565b818152846020838601011115614f8957600080fd5b816020850160208301376000918101602001919091529392505050565b60006020808385031215614fb957600080fd5b82356001600160401b0380821115614fd057600080fd5b818501915085601f830112614fe457600080fd5b8135614ff7614ff282614f14565b614ee4565b81815260059190911b8301840190848101908883111561501657600080fd5b8585015b838110156150af578035858111156150325760008081fd5b86016080818c03601f190181131561504a5760008081fd5b615052614e9a565b89830135888111156150645760008081fd5b6150728e8c83870101614f37565b8252506040808401358b830152606061508c818601614c4c565b8284015261509b848601614c4c565b90830152508552505091860191860161501a565b5098975050505050505050565b6001600160a01b0381168114611eda57600080fd5b6000602082840312156150e357600080fd5b8135614d28816150bc565b600080600080600060a0868803121561510657600080fd5b8535945060208601356001600160401b0381111561512357600080fd5b61512f88828901614f37565b9450506040860135925061514560608701614c4c565b91506080860135615155816150bc565b809150509295509295909350565b600080600080600080600080888a036101c081121561518157600080fd5b893561518c816150bc565b985060208a013561519c816150bc565b975060408a01356151ac816150bc565b965060608a01356151bc816150bc565b955060e0607f19820112156151d057600080fd5b5060808901935061016089013592506101808901356001600160401b03808211156151fa57600080fd5b6152068c838d01614f37565b93506101a08b013591508082111561521d57600080fd5b5061522a8b828c01614f37565b9150509295985092959890939650565b60008060008060008060008060006101c08a8c03121561525957600080fd5b6152628a614c4c565b985061527060208b01614c4c565b975061527e60408b01614c4c565b965061528c60608b01614c4c565b955060808a0135945060a08a013593506152a98b60c08c01614d2f565b92506152b98b6101008c01614d46565b91506152c98b6101808c01614d2f565b90509295985092959850929598565b6000602082840312156152ea57600080fd5b5035919050565b8015158114611eda57600080fd5b60006020828403121561531157600080fd5b8135614d28816152f1565b60006020828403121561532e57600080fd5b81356001600160401b0381111561534457600080fd5b614acb84828501614f37565b6000602080838503121561536357600080fd5b82356001600160401b038082111561537a57600080fd5b818501915085601f83011261538e57600080fd5b813561539c614ff282614f14565b81815260059190911b830184019084810190888311156153bb57600080fd5b8585015b838110156150af578035858111156153d75760008081fd5b86016060818c03601f19018113156153ef5760008081fd5b6153f7614ec2565b89830135888111156154095760008081fd5b6154178e8c83870101614f37565b8252506040808401358b83015261542f838501614c4c565b90820152855250509186019186016153bf565b6000806000806080858703121561545857600080fd5b61546185614c4c565b93506020850135925061547660408601614c4c565b915061548460608601614c4c565b905092959194509250565b600080604083850312156154a257600080fd5b82356001600160401b038111156154b857600080fd5b6154c485828601614f37565b95602094909401359450505050565b600080604083850312156154e657600080fd5b823591506154f660208401614c4c565b90509250929050565b60208082526058908201527f506f6c79676f6e5a6b45564d3a3a766572696679426174636865733a2070656e60408201527f64696e6753746174654e756d206d757374206265206c657373206f7220657175606082015277616c207468616e206c61737450656e64696e67537461746560401b608082015260a00190565b6020808252604c90820152600080516020615df183398151915260408201527f744e756d4261746368206d757374206d61746368207468652070656e64696e6760608201526b040e6e8c2e8ca40c4c2e8c6d60a31b608082015260a00190565b6020808252604390820152600080516020615df183398151915260408201527f744e756d426174636820737461746520726f6f7420646f6573206e6f742065786060820152621a5cdd60ea1b608082015260a00190565b6020808252605d90820152600080516020615df183398151915260408201527f744e756d4261746368206d757374206265206c657373206f7220657175616c2060608201527f7468616e2063757272656e744c61737456657269666965644261746368000000608082015260a00190565b60208082526057908201527f506f6c79676f6e5a6b45564d3a3a766572696679426174636865733a2066696e60408201527f616c4e65774261746368206d75737420626520626967676572207468616e20636060820152760eae4e4cadce898c2e6e8accae4d2ccd2cac884c2e8c6d604b1b608082015260a00190565b60008251615734818460208701614cbd565b9190910192915050565b60006020828403121561575057600080fd5b5051919050565b634e487b7160e01b600052601260045260246000fd5b60008261577c5761577c615757565b500690565b600181811c9082168061579557607f821691505b6020821081036157b557634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526023908201527f506f6c79676f6e5a6b45564d3a3a6f6e6c7941646d696e3a204f6e6c7920616460408201526236b4b760e91b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b60006001600160401b03808316818516808303821115615836576158366157fe565b01949350505050565b60208082526042908201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960408201527f53746174653a206f6e6c79206966206e6f7420656d657267656e637920737461606082015261746560f01b608082015260a00190565b634e487b7160e01b600052603260045260246000fd5b60006001600160401b038083168181036158d9576158d96157fe565b6001019392505050565b928352602083019190915260c01b6001600160c01b031916604082015260480190565b9485526020850193909352604084019190915260c01b6001600160c01b0319166060808401919091521b6001600160601b0319166068820152607c0190565b600060018201615957576159576157fe565b5060010190565b60006001600160401b038381169083168181101561597e5761597e6157fe565b039392505050565b600082821015615998576159986157fe565b500390565b60008160001904831182151516156159b7576159b76157fe565b500290565b601f821115614a2c57600081815260208120601f850160051c810160208610156159e35750805b601f850160051c820191505b81811015613fc1578281556001016159ef565b81516001600160401b03811115615a1b57615a1b614e84565b615a2f81615a298454615781565b846159bc565b602080601f831160018114615a645760008415615a4c5750858301515b600019600386901b1c1916600185901b178555613fc1565b600085815260208120601f198616915b82811015615a9357888601518255948401946001909101908401615a74565b5085821015615ab15787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600082615ad057615ad0615757565b500490565b60208082526043908201527f506f6c79676f6e5a6b45564d3a3a6973466f7263654261746368416c6c6f776560408201527f643a204f6e6c7920696620666f72636520626174636820697320617661696c61606082015262626c6560e81b608082015260a00190565b60008219821115615b5157615b516157fe565b500190565b6020808252603b908201527f456d657267656e63794d616e616765723a3a6966456d657267656e637953746160408201527f74653a206f6e6c7920696620656d657267656e63792073746174650000000000606082015260800190565b6020808252603c908201527f506f6c79676f6e5a6b45564d3a3a6f6e6c79547275737465644167677265676160408201527f746f723a204f6e6c7920747275737465642061676772656761746f7200000000606082015260800190565b8381526001600160a01b0383166020820152606060408201819052600090615c3a90830184614ce9565b95945050505050565b60006001600160401b0380841680615c5d57615c5d615757565b92169190910492915050565b61012081016040808784376000838201818152879190815b6002811015615ca157848483379084018281529284019290600101615c81565b5050828760c0870137610100850181815286935091505b6001811015615cd7578251825260209283019290910190600101615cb8565b50505095945050505050565b600060208284031215615cf557600080fd5b8151614d28816152f1565b600181815b80851115615d3b578160001904821115615d2157615d216157fe565b80851615615d2e57918102915b93841c9390800290615d05565b509250929050565b600082615d5257506001614d40565b81615d5f57506000614d40565b8160018114615d755760028114615d7f57615d9b565b6001915050614d40565b60ff841115615d9057615d906157fe565b50506001821b614d40565b5060208310610133831016604e8410600b8410161715615dbe575081810a614d40565b615dc88383615d00565b8060001904821115615ddc57615ddc6157fe565b029392505050565b6000614d288383615d4356fe506f6c79676f6e5a6b45564d3a3a766572696679426174636865733a20696e69506f6c79676f6e5a6b45564d3a3a6163746976617465456d657267656e637953506f6c79676f6e5a6b45564d3a3a5f766572696679426174636865733a20696e506f6c79676f6e5a6b45564d3a3a5f70726f766544697374696e637450656e64506f6c79676f6e5a6b45564d3a3a73657175656e6365466f726365426174636830644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001506f6c79676f6e5a6b45564d3a3a73657175656e6365426174636865733a2046a2646970667358221220167a8f9be9686096974434bdb06f09cd7d4921d903936f91eb32d732ac4f1e6564736f6c634300080f0033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106103925760003560e01c806396dc3d39116101e0578063cfa8ed4711610110578063e7a7ed02116100a8578063e7a7ed0214610905578063e8bf92ed1461091f578063eaeb077b14610932578063edc4112114610945578063f14916d614610958578063f2fde38b1461096b578063f851a4401461097e578063f8b823e414610991578063fe16564f1461099a57600080fd5b8063cfa8ed4714610860578063d02103ca1461087a578063d8d1091b1461088d578063d8f54db0146108a0578063d939b315146108b4578063dbc16976146108ce578063e0d17441146108d6578063e11f3f18146108e9578063e217cfd6146108fc57600080fd5b8063ab9fc5ef11610183578063ab9fc5ef14610759578063adc879e914610763578063afd23cbe1461077d578063b4d63f58146107a5578063b6b0b09714610805578063c0cad3021461081f578063c0ed84e014610832578063c89e42df1461083a578063cf1363061461084d57600080fd5b806396dc3d39146106dd57806399f5634e146106f05780639b796760146106f85780639c9f3dfe1461070b5780639eb831b91461071e5780639f0d039d14610726578063a3c573eb1461072e578063aa58bad61461074157600080fd5b80634a910e6a116102c6578063715018a61161025e578063715018a6146105e65780637215541a146105ee57806375c508b3146106015780637fcb365314610614578063837a473814610627578063841b24d7146106955780638b48931e146106af5780638c4a0af7146106b95780638da5cb5b146106cc57600080fd5b80634a910e6a1461052c5780635392c5e01461053f578063542028d51461055f5780635437988d14610567578063574f649e1461057a57806360943d6a1461058d5780636b8616ce146105a05780636ff512cc146105c0578063704b6c02146105d357600080fd5b80632d0889d3116103395780632d0889d314610475578063383b3be81461047f578063394218e9146104925780633c158267146104a5578063423fa856146104b857806345605267146104d2578063458c0477146104ec5780634834a343146104ff5780634a1a89a71461051257600080fd5b80630eaa86ea14610397578063107bf28c146103bd57806310a01a72146103d257806315064c96146103e75780631816b7e51461040457806319d8ac6114610417578063220d7899146104425780632987898314610455575b600080fd5b6103aa6103a5366004614c68565b6109ad565b6040519081526020015b60405180910390f35b6103c5610b7c565b6040516103b49190614d15565b6103e56103e0366004614d57565b610c0a565b005b6065546103f49060ff1681565b60405190151581526020016103b4565b6103e5610412366004614de4565b610e53565b60685461042a906001600160401b031681565b6040516001600160401b0390911681526020016103b4565b6103c5610450366004614e08565b610f74565b606a54610468906001600160a01b031681565b6040516103b49190614e55565b6103aa620493e081565b6103f461048d366004614e69565b611115565b6103e56104a0366004614e69565b61115c565b6103e56104b3366004614fa6565b611318565b60685461042a90600160401b90046001600160401b031681565b60685461042a90600160801b90046001600160401b031681565b60725461042a906001600160401b031681565b6103e561050d366004614d57565b611adf565b60725461042a90600160401b90046001600160401b031681565b6103e561053a366004614e69565b611e27565b6103aa61054d366004614e69565b606d6020526000908152604090205481565b6103c5611edd565b6103e56105753660046150d1565b611eea565b6103aa6105883660046150ee565b611f14565b6103e561059b366004615163565b611f57565b6103aa6105ae366004614e69565b60666020526000908152604090205481565b6103e56105ce3660046150d1565b6122b2565b6103e56105e13660046150d1565b612330565b6103e56123a5565b6103e56105fc366004614e69565b6123b9565b6103e561060f36600461523a565b6125c0565b60695461042a906001600160401b031681565b61066a6106353660046152d8565b6071602052600090815260409020805460018201546002909201546001600160401b0380831693600160401b90930416919084565b604080516001600160401b0395861681529490931660208501529183015260608201526080016103b4565b60725461042a90600160c01b90046001600160401b031681565b61042a62093a8081565b6103e56106c73660046152ff565b61264f565b6033546001600160a01b0316610468565b6103e56106eb366004614e69565b6126c6565b6103aa6126f0565b6103e5610706366004614e69565b6127d8565b6103e5610719366004614e69565b61280d565b6103aa600c81565b6074546103aa565b607054610468906001600160a01b031681565b60655461042a9061010090046001600160401b031681565b61042a6206978081565b606c5461042a90600160a81b90046001600160401b031681565b60655461079290600160481b900461ffff1681565b60405161ffff90911681526020016103b4565b6107e06107b3366004614e69565b606760205260009081526040902080546001909101546001600160401b0380821691600160401b90041683565b604080519384526001600160401b0392831660208501529116908201526060016103b4565b60655461046890600160581b90046001600160a01b031681565b6103e561082d36600461531c565b6129bb565b61042a6129d3565b6103e561084836600461531c565b612a20565b6103e561085b366004614e69565b612a86565b60695461046890600160401b90046001600160a01b031681565b606c54610468906001600160a01b031681565b6103e561089b366004615350565b612b07565b606c546103f490600160a01b900460ff1681565b60725461042a90600160801b90046001600160401b031681565b6103e5612fc6565b6103e56108e4366004615442565b613082565b6103e56108f736600461523a565b6130f4565b61042a6103e881565b60685461042a90600160c01b90046001600160401b031681565b606b54610468906001600160a01b031681565b6103e561094036600461548f565b613238565b6103e5610953366004614d57565b613561565b6103e56109663660046150d1565b613680565b6103e56109793660046150d1565b6136f5565b607354610468906001600160a01b031681565b6103aa60745481565b6103e56109a83660046154d3565b61376b565b60008060006109ba6129d3565b90506001600160401b03881615610a57576072546001600160401b039081169089161115610a035760405162461bcd60e51b81526004016109fa906154ff565b60405180910390fd5b6001600160401b038089166000908152607160205260409020600281015481549094509091898116600160401b9092041614610a515760405162461bcd60e51b81526004016109fa9061557d565b50610ac1565b6001600160401b0387166000908152606d6020526040902054915081610a8f5760405162461bcd60e51b81526004016109fa906155dd565b806001600160401b0316876001600160401b03161115610ac15760405162461bcd60e51b81526004016109fa90615634565b806001600160401b0316866001600160401b031611610af25760405162461bcd60e51b81526004016109fa906156a5565b6000610b018888888689610f74565b90506000600080516020615e91833981519152600283604051610b249190615722565b602060405180830381855afa158015610b41573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190610b64919061573e565b610b6e919061576d565b9a9950505050505050505050565b606f8054610b8990615781565b80601f0160208091040260200160405190810160405280929190818152602001828054610bb590615781565b8015610c025780601f10610bd757610100808354040283529160200191610c02565b820191906000526020600020905b815481529060010190602001808311610be557829003601f168201915b505050505081565b610c1261378d565b600080610c1d6129d3565b90506001600160401b038a1615610cb1576072546001600160401b03908116908b161115610c5d5760405162461bcd60e51b81526004016109fa906154ff565b6001600160401b03808b1660009081526071602052604090206002810154815490945090918b8116600160401b9092041614610cab5760405162461bcd60e51b81526004016109fa9061557d565b50610d1b565b6001600160401b0389166000908152606d6020526040902054915081610ce95760405162461bcd60e51b81526004016109fa906155dd565b806001600160401b0316896001600160401b03161115610d1b5760405162461bcd60e51b81526004016109fa90615634565b806001600160401b0316886001600160401b031611610d4c5760405162461bcd60e51b81526004016109fa906156a5565b6000610d5b8a8a8a868b610f74565b606980546001600160401b0319166001600160401b038c81169182179092556000908152606d602052604090208990556072549192501615610da857607280546001600160801b03191690555b606c546040516333d6247d60e01b8152600481018a90526001600160a01b03909116906333d6247d90602401600060405180830381600087803b158015610dee57600080fd5b505af1158015610e02573d6000803e3d6000fd5b50506040518981523392506001600160401b038c1691507f0c0ce073a7d7b5850c04ccc4b20ee7d3179d5f57d0ac44399565792c0f72fce79060200160405180910390a35050505050505050505050565b6073546001600160a01b03163314610e7d5760405162461bcd60e51b81526004016109fa906157bb565b6103e88161ffff1610158015610e9857506104008161ffff16105b610f1d5760405162461bcd60e51b815260206004820152604a60248201527f506f6c79676f6e5a6b45564d3a3a7365744d756c7469706c696572426174636860448201527f4665653a206e65774d756c7469706c696572426174636846656520696e636f72606482015269726563742072616e676560b01b608482015260a4016109fa565b6065805461ffff60481b1916600160481b61ffff8416908102919091179091556040519081527f7019933d795eba185c180209e8ae8bffbaa25bcef293364687702c31f4d302c5906020015b60405180910390a150565b6001600160401b03808616600081815260676020526040808220549388168252902054606092911580610fa657508115155b61101a576040805162461bcd60e51b81526020600482015260248101919091527f506f6c79676f6e5a6b45564d3a3a676574496e707574536e61726b427974657360448201527f3a206f6c64416363496e7075744861736820646f6573206e6f7420657869737460648201526084016109fa565b8061108f576040805162461bcd60e51b81526020600482015260248101919091527f506f6c79676f6e5a6b45564d3a3a676574496e707574536e61726b427974657360448201527f3a206e6577416363496e7075744861736820646f6573206e6f7420657869737460648201526084016109fa565b606c54604080516001600160601b03193360601b166020820152603481019790975260548701939093526001600160c01b031960c0998a1b81166074880152600160a81b909104891b8116607c870152608486019490945260a485015260c4840194909452509290931b90911660e4830152805180830360cc01815260ec909201905290565b6072546001600160401b038281166000908152607160205260408120549092429261114b92600160801b90920481169116615814565b6001600160401b0316111592915050565b6073546001600160a01b031633146111865760405162461bcd60e51b81526004016109fa906157bb565b62093a806001600160401b038216111561121f5760405162461bcd60e51b815260206004820152604e60248201527f506f6c79676f6e5a6b45564d3a3a73657454727573746564416767726567617460448201527f6f7254696d656f75743a20457863656564206d61782068616c7420616767726560648201526d19d85d1a5bdb881d1a5b595bdd5d60921b608482015260a4016109fa565b60655460ff166112c2576072546001600160401b03600160c01b9091048116908216106112c25760405162461bcd60e51b8152602060048201526044602482018190527f506f6c79676f6e5a6b45564d3a3a736574547275737465644167677265676174908201527f6f7254696d656f75743a204e65772074696d656f7574206d757374206265206c60648201526337bbb2b960e11b608482015260a4016109fa565b607280546001600160c01b0316600160c01b6001600160401b038416908102919091179091556040519081527f1f4fa24c2e4bad19a7f3ec5c5485f70d46c798461c2e684f55bbd0fc661373a190602001610f69565b60655460ff161561133b5760405162461bcd60e51b81526004016109fa9061583f565b606954600160401b90046001600160a01b031633146113c25760405162461bcd60e51b815260206004820152603a60248201527f506f6c79676f6e5a6b45564d3a3a6f6e6c795472757374656453657175656e6360448201527f65723a204f6e6c7920747275737465642073657175656e63657200000000000060648201526084016109fa565b8051806114375760405162461bcd60e51b815260206004820152603d60248201527f506f6c79676f6e5a6b45564d3a3a73657175656e6365426174636865733a204160448201527f74206c65617374206d7573742073657175656e6365203120626174636800000060648201526084016109fa565b6103e881106114b0576040805162461bcd60e51b81526020600482015260248101919091527f506f6c79676f6e5a6b45564d3a3a73657175656e6365426174636865733a204360448201527f616e6e6f742073657175656e63652074686174206d616e79206261746368657360648201526084016109fa565b6068546001600160401b03600160401b82048116600081815260676020526040812054838516949293600160801b90930490921691905b85811015611915576000878281518110611503576115036158a7565b60200260200101519050600081606001516001600160401b03161115611693578361152d816158bd565b94505060008160000151805190602001208260200151836060015160405160200161155a939291906158e3565b60408051601f1981840301815291815281516020928301206001600160401b0388166000908152606690935291205490915081146115ee5760405162461bcd60e51b815260206004820152603d6024820152600080516020615eb183398151915260448201527f6f7263656420626174636865732064617461206d757374206d6174636800000060648201526084016109fa565b81606001516001600160401b031682604001516001600160401b0316101561168d5760405162461bcd60e51b81526020600482015260586024820152600080516020615eb183398151915260448201527f6f7263656420626174636865732074696d657374616d70206d757374206265206064820152773134b3b3b2b91037b91032b8bab0b6103a3430b71036b4b760411b608482015260a4016109fa565b50611808565b6020810151158061171c5750606c5460208201516040516312bd9b1960e11b81526001600160a01b039092169163257b3632916116d69160040190815260200190565b6020604051808303816000875af11580156116f5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611719919061573e565b15155b61178e5760405162461bcd60e51b815260206004820152603a60248201527f506f6c79676f6e5a6b45564d3a3a73657175656e6365426174636865733a204760448201527f6c6f62616c206578697420726f6f74206d75737420657869737400000000000060648201526084016109fa565b805151620493e0116118085760405162461bcd60e51b815260206004820152603a60248201527f506f6c79676f6e5a6b45564d3a3a73657175656e6365426174636865733a205460448201527f72616e73616374696f6e73206279746573206f766572666c6f7700000000000060648201526084016109fa565b856001600160401b031681604001516001600160401b03161015801561183b57504281604001516001600160401b031611155b6118ad5760405162461bcd60e51b815260206004820152603d60248201527f506f6c79676f6e5a6b45564d3a3a73657175656e6365426174636865733a205460448201527f696d657374616d70206d75737420626520696e736964652072616e676500000060648201526084016109fa565b805180516020918201208183015160408085015190516118d4948894939291339101615906565b60405160208183030381529060405280519060200120925084806118f7906158bd565b9550508060400151955050808061190d90615945565b9150506114e7565b506068546001600160401b03600160c01b909104811690831611156119885760405162461bcd60e51b81526020600482015260356024820152600080516020615eb18339815191526044820152746f7263652062617463686573206f766572666c6f7760581b60648201526084016109fa565b6068546000906119a890600160801b90046001600160401b03168461595e565b6119bb906001600160401b031687615986565b60408051606081018252848152426001600160401b03908116602080840191825260688054600160401b9081900485168688019081528c861660008181526067909552979093209551865592516001909501805492519585166001600160801b03199384161795851684029590951790945583548b841691161793029290921767ffffffffffffffff60801b1916600160801b92871692909202919091179055607454909150611a9090339030908490611a75919061599d565b606554600160581b90046001600160a01b03169291906137e7565b611a98613852565b606854604051600160401b9091046001600160401b0316907f303446e6a8cb73c83dff421c0b1d5e5ce0719dab1bff13660fc254e58cc17fce90600090a250505050505050565b60655460ff1615611b025760405162461bcd60e51b81526004016109fa9061583f565b6072546001600160401b038781166000908152606760205260409020600101544292611b3992600160c01b90910481169116615814565b6001600160401b03161115611bc25760405162461bcd60e51b815260206004820152604360248201527f506f6c79676f6e5a6b45564d3a3a766572696679426174636865733a2054727560448201527f737465642061676772656761746f722074696d656f7574206e6f7420657870696064820152621c995960ea1b608482015260a4016109fa565b6103e8611bcf888861595e565b6001600160401b031610611c4b5760405162461bcd60e51b815260206004820152603c60248201527f506f6c79676f6e5a6b45564d3a3a766572696679426174636865733a2043616e60448201527f6e6f74207665726966792074686174206d616e7920626174636865730000000060648201526084016109fa565b611c5b88888888888888886138f2565b611c6486613de3565b607254600160801b90046001600160401b0316600003611d2b57606980546001600160401b0319166001600160401b038881169182179092556000908152606d602052604090208590556072541615611cc857607280546001600160801b03191690555b606c546040516333d6247d60e01b8152600481018790526001600160a01b03909116906333d6247d90602401600060405180830381600087803b158015611d0e57600080fd5b505af1158015611d22573d6000803e3d6000fd5b50505050611ddc565b611d33613852565b607280546001600160401b0316906000611d4c836158bd565b82546001600160401b039182166101009390930a92830292820219169190911790915560408051608081018252428316815289831660208083019182528284018b8152606084018b8152607254871660009081526071909352949091209251835492518616600160401b026001600160801b03199093169516949094171781559151600183015551600290910155505b60405184815233906001600160401b038816907f9c72852172521097ba7e1482e6b44b351323df0155f97f4ea18fcec28e1f5966906020015b60405180910390a35050505050505050565b606a546001600160a01b03163314611ed157611e4281611115565b611ed15760405162461bcd60e51b815260206004820152605460248201527f506f6c79676f6e5a6b45564d3a3a636f6e736f6c696461746550656e64696e6760448201527f53746174653a2050656e64696e67207374617465206973206e6f7420726561646064820152731e481d1bc818994818dbdb9cdbdb1a59185d195960621b608482015260a4016109fa565b611eda81613fc9565b50565b606e8054610b8990615781565b611ef261378d565b606b80546001600160a01b0319166001600160a01b0392909216919091179055565b6000858580519060200120858585604051602001611f36959493929190615906565b60405160208183030381529060405280519060200120905095945050505050565b600054610100900460ff1615808015611f775750600054600160ff909116105b80611f915750303b158015611f91575060005460ff166001145b611ff45760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016109fa565b6000805460ff191660011790558015612017576000805461ff0019166101001790555b606c80546001600160a01b03199081166001600160a01b038c81169190911790925560658054600160581b600160f81b031916600160581b8c851602179055606b805482168a84161790556070805490911691881691909117905561207f60208601866150d1565b607380546001600160a01b0319166001600160a01b03929092169190911790556120af60608601604087016150d1565b606980546001600160a01b0392909216600160401b02600160401b600160e01b03199092169190911790556120ea60c0860160a087016150d1565b606a80546001600160a01b0319166001600160a01b039290921691909117905560008052606d6020527fda90043ba5b4096ba14704bc227ab0d3167da15b887e62ab2e76e37daa71135684905561214760e0860160c08701614e69565b607280546001600160401b0392909216600160c01b026001600160c01b0390921691909117905561217e6040860160208701614e69565b606c80546001600160401b0392909216600160a81b0267ffffffffffffffff60a81b199092169190911790556121ba6080860160608701614e69565b607280546001600160401b0392909216600160801b0267ffffffffffffffff60801b199092169190911790556121f660a08601608087016152ff565b606c8054911515600160a01b0260ff60a01b19909216919091179055606e61221e8482615a02565b50606f61222b8382615a02565b50670de0b6b3a7640000607455606580546affffffffffffffffffff0019166a03ea0000000000000708001790556122616141ad565b80156122a7576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050565b6073546001600160a01b031633146122dc5760405162461bcd60e51b81526004016109fa906157bb565b60698054600160401b600160e01b031916600160401b6001600160a01b038416021790556040517ff54144f9611984021529f814a1cb6a41e22c58351510a0d9f7e822618abb9cc090610f69908390614e55565b6073546001600160a01b0316331461235a5760405162461bcd60e51b81526004016109fa906157bb565b607380546001600160a01b0319166001600160a01b0383161790556040517f5a272403b402d892977df56625f4164ccaf70ca3863991c43ecfe76a6905b0a190610f69908390614e55565b6123ad61378d565b6123b7600061421d565b565b6033546001600160a01b031633146125b85760006123d56129d3565b9050806001600160401b0316826001600160401b03161161244c5760405162461bcd60e51b815260206004820152603c6024820152600080516020615e1183398151915260448201527f746174653a20426174636820616c72656164792076657269666965640000000060648201526084016109fa565b6068546001600160401b03600160401b90910481169083161180159061248e57506001600160401b038083166000908152606760205260409020600101541615155b6125075760405162461bcd60e51b81526020600482015260506024820152600080516020615e1183398151915260448201527f746174653a204261746368206e6f742073657175656e636564206f72206e6f7460648201526f20656e64206f662073657175656e636560801b608482015260a4016109fa565b6001600160401b0380831660009081526067602052604090206001015442916125359162093a809116615814565b6001600160401b031611156125b65760405162461bcd60e51b815260206004820152604d6024820152600080516020615e1183398151915260448201527f746174653a204167677265676174696f6e2068616c742074696d656f7574206960648201526c1cc81b9bdd08195e1c1a5c9959609a1b608482015260a4016109fa565b505b611eda61426f565b60655460ff16156125e35760405162461bcd60e51b81526004016109fa9061583f565b6125f48989898989898989896142df565b6001600160401b0386166000908152606d60209081526040918290205482519081529081018690527f1f44c21118c4603cfb4e1b621dbcfa2b73efcececee2b99b620b2953d33a7010910160405180910390a16122a761426f565b6073546001600160a01b031633146126795760405162461bcd60e51b81526004016109fa906157bb565b606c8054821515600160a01b0260ff60a01b199091161790556040517fbacda50a4a8575be1d91a7ebe29ee45056f3a94f12a2281eb6b43afa33bcefe690610f6990831515815260200190565b6126ce61378d565b606980546001600160401b0319166001600160401b0392909216919091179055565b6065546040516370a0823160e01b81526000918291600160581b9091046001600160a01b0316906370a082319061272b903090600401614e55565b602060405180830381865afa158015612748573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061276c919061573e565b905060006127786129d3565b6068546001600160401b03600160401b82048116916127a891600160801b8204811691600160c01b90041661595e565b6127b29190615814565b6127bc919061595e565b6001600160401b031690506127d18183615ac1565b9250505090565b6127e061378d565b606880546001600160401b03909216600160401b0267ffffffffffffffff60401b19909216919091179055565b6073546001600160a01b031633146128375760405162461bcd60e51b81526004016109fa906157bb565b62093a806001600160401b03821611156128cb5760405162461bcd60e51b815260206004820152604960248201527f506f6c79676f6e5a6b45564d3a3a73657450656e64696e67537461746554696d60448201527f656f75743a20457863656564206d61782068616c74206167677265676174696f6064820152681b881d1a5b595bdd5d60ba1b608482015260a4016109fa565b60655460ff16612960576072546001600160401b03600160801b9091048116908216106129605760405162461bcd60e51b815260206004820152603f60248201527f506f6c79676f6e5a6b45564d3a3a73657450656e64696e67537461746554696d60448201527f656f75743a204e65772074696d656f7574206d757374206265206c6f7765720060648201526084016109fa565b6072805467ffffffffffffffff60801b1916600160801b6001600160401b038416908102919091179091556040519081527fc4121f4e22c69632ebb7cf1f462be0511dc034f999b52013eddfb24aab765c7590602001610f69565b6129c361378d565b606f6129cf8282615a02565b5050565b6072546000906001600160401b031615612a1057506072546001600160401b03908116600090815260716020526040902054600160401b90041690565b506069546001600160401b031690565b6073546001600160a01b03163314612a4a5760405162461bcd60e51b81526004016109fa906157bb565b606e612a568282615a02565b507f6b8f723a4c7a5335cafae8a598a0aa0301be1387c037dccc085b62add6448b2081604051610f699190614d15565b6073546001600160a01b03163314612ab05760405162461bcd60e51b81526004016109fa906157bb565b6065805468ffffffffffffffff0019166101006001600160401b038416908102919091179091556040519081527f03a12f7e53d2a9e31a9e913d85c12c4c38feb92abe003c111329298af088437f90602001610f69565b60655460ff1615612b2a5760405162461bcd60e51b81526004016109fa9061583f565b606c54600160a01b900460ff161515600114612b585760405162461bcd60e51b81526004016109fa90615ad5565b805180612bbb5760405162461bcd60e51b815260206004820152603f6024820152600080516020615e7183398151915260448201527f65733a204d75737420666f726365206174206c6561737420312062617463680060648201526084016109fa565b6103e88110612c2c5760405162461bcd60e51b81526020600482015260436024820152600080516020615e7183398151915260448201527f65733a2043616e6e6f74207665726966792074686174206d616e79206261746360648201526268657360e81b608482015260a4016109fa565b6068546001600160401b03600160c01b8204811691612c54918491600160801b900416615b3e565b1115612cb05760405162461bcd60e51b81526020600482015260376024820152600080516020615e71833981519152604482015276195cce88119bdc98d94818985d18da081a5b9d985b1a59604a1b60648201526084016109fa565b6068546001600160401b03600160401b820481166000818152606760205260408120549193600160801b9004909216915b84811015612ede576000868281518110612cfd57612cfd6158a7565b602002602001015190508380612d12906158bd565b945050600081600001518051906020012082602001518360400151604051602001612d3f939291906158e3565b60408051601f1981840301815291815281516020928301206001600160401b038816600090815260669093529120549091508114612dde5760405162461bcd60e51b81526020600482015260426024820152600080516020615e7183398151915260448201527f65733a20466f7263656420626174636865732064617461206d757374206d61746064820152610c6d60f31b608482015260a4016109fa565b612de9600188615986565b8303612e805742620697808360400151612e039190615814565b6001600160401b03161115612e805760405162461bcd60e51b81526020600482015260496024820152600080516020615e7183398151915260448201527f65733a20466f72636564206261746368206973206e6f7420696e2074696d656f6064820152681d5d081c195c9a5bd960ba1b608482015260a4016109fa565b8151805160209182012081840151604051612ea393889392914291339101615906565b6040516020818303038152906040528051906020012093508580612ec6906158bd565b96505050508080612ed690615945565b915050612ce1565b50606880546001600160401b031916426001600160401b03908116918217808455604080516060810182528681526020808201958652600160401b9384900485168284019081528a861660008181526067909352848320935184559651600193909301805491519387166001600160801b0319909216919091179286168502929092179091558554600160401b600160c01b03191694830267ffffffffffffffff60801b191694909417600160801b88851602179485905551930416917f648a61dd2438f072f5a1960939abd30f37aea80d2e94c9792ad142d3e0a490a49190a25050505050565b60655460ff16612fe85760405162461bcd60e51b81526004016109fa90615b56565b6073546001600160a01b031633146130125760405162461bcd60e51b81526004016109fa906157bb565b607060009054906101000a90046001600160a01b03166001600160a01b031663dbc169766040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561306257600080fd5b505af1158015613076573d6000803e3d6000fd5b505050506123b7614903565b61308a61378d565b604080516060810182529384526001600160401b03928316602080860191825292841685830190815295841660009081526067909352912092518355516001909201805493518216600160401b026001600160801b03199094169290911691909117919091179055565b606a546001600160a01b0316331461311e5760405162461bcd60e51b81526004016109fa90615bb3565b61312f8989898989898989896142df565b606980546001600160401b0319166001600160401b038881169182179092556000908152606d60205260409020859055607254161561317957607280546001600160801b03191690555b606c546040516333d6247d60e01b8152600481018790526001600160a01b03909116906333d6247d90602401600060405180830381600087803b1580156131bf57600080fd5b505af11580156131d3573d6000803e3d6000fd5b5050607280546001600160c01b031661127560c71b179055505060405184815233906001600160401b038816907fcc1b5520188bf1dd3e63f98164b577c4d75c11a619ddea692112f0d1aec4cf729060200160405180910390a3505050505050505050565b60655460ff161561325b5760405162461bcd60e51b81526004016109fa9061583f565b606c54600160a01b900460ff1615156001146132895760405162461bcd60e51b81526004016109fa90615ad5565b600061329460745490565b9050818111156132f95760405162461bcd60e51b815260206004820152602a60248201527f506f6c79676f6e5a6b45564d3a3a666f72636542617463683a204e6f7420656e6044820152696f756768206d6174696360b01b60648201526084016109fa565b620493e083511061336a5760405162461bcd60e51b815260206004820152603560248201527f506f6c79676f6e5a6b45564d3a3a666f72636542617463683a205472616e73616044820152746374696f6e73206279746573206f766572666c6f7760581b60648201526084016109fa565b60655461338990600160581b90046001600160a01b03163330846137e7565b606c5460408051633ed691ef60e01b815290516000926001600160a01b031691633ed691ef9160048083019260209291908290030181865afa1580156133d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133f7919061573e565b60688054919250600160c01b9091046001600160401b031690601861341b836158bd565b91906101000a8154816001600160401b0302191690836001600160401b03160217905550508380519060200120814260405160200161345c939291906158e3565b60408051808303601f190181529181528151602092830120606854600160c01b90046001600160401b03166000908152606690935291205532330361350057606854604080518381523360208201526060918101829052600091810191909152600160c01b9091046001600160401b0316907ff94bb37db835f1ab585ee00041849a09b12cd081d77fa15ca070757619cbc9319060800160405180910390a261355b565b606860189054906101000a90046001600160401b03166001600160401b03167ff94bb37db835f1ab585ee00041849a09b12cd081d77fa15ca070757619cbc93182338760405161355293929190615c10565b60405180910390a25b50505050565b606a546001600160a01b0316331461358b5760405162461bcd60e51b81526004016109fa90615bb3565b61359b88888888888888886138f2565b606980546001600160401b0319166001600160401b038881169182179092556000908152606d6020526040902085905560725416156135e557607280546001600160801b03191690555b606c546040516333d6247d60e01b8152600481018790526001600160a01b03909116906333d6247d90602401600060405180830381600087803b15801561362b57600080fd5b505af115801561363f573d6000803e3d6000fd5b50506040518681523392506001600160401b03891691507f0c0ce073a7d7b5850c04ccc4b20ee7d3179d5f57d0ac44399565792c0f72fce790602001611e15565b6073546001600160a01b031633146136aa5760405162461bcd60e51b81526004016109fa906157bb565b606a80546001600160a01b0319166001600160a01b0383161790556040517f61f8fec29495a3078e9271456f05fb0707fd4e41f7661865f80fc437d06681ca90610f69908390614e55565b6136fd61378d565b6001600160a01b0381166137625760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016109fa565b611eda8161421d565b61377361378d565b6001600160401b03166000908152606d6020526040902055565b6033546001600160a01b031633146123b75760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016109fa565b6040516001600160a01b038085166024830152831660448201526064810182905261355b9085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915261495a565b6072546001600160401b03600160401b82048116911611156123b75760725460009061388f90600160401b90046001600160401b03166001615814565b905061389a81611115565b15611eda576072546000906002906138bc9084906001600160401b031661595e565b6138c69190615c43565b6138d09083615814565b90506138db81611115565b156138e9576129cf81613fc9565b6129cf82613fc9565b6000806138fd6129d3565b90506001600160401b038a1615613a63576072546001600160401b03908116908b1611156139b55760405162461bcd60e51b815260206004820152605960248201527f506f6c79676f6e5a6b45564d3a3a5f766572696679426174636865733a20706560448201527f6e64696e6753746174654e756d206d757374206265206c657373206f7220657160648201527875616c207468616e206c61737450656e64696e67537461746560381b608482015260a4016109fa565b6001600160401b03808b1660009081526071602052604090206002810154815490945090918b8116600160401b9092041614613a5d5760405162461bcd60e51b815260206004820152604d6024820152600080516020615e3183398151915260448201527f69744e756d4261746368206d757374206d61746368207468652070656e64696e60648201526c0ce40e6e8c2e8ca40c4c2e8c6d609b1b608482015260a4016109fa565b50613b89565b6001600160401b0389166000908152606d6020526040902054915081613aed5760405162461bcd60e51b815260206004820152604460248201819052600080516020615e31833981519152908201527f69744e756d426174636820737461746520726f6f7420646f6573206e6f7420656064820152631e1a5cdd60e21b608482015260a4016109fa565b806001600160401b0316896001600160401b03161115613b895760405162461bcd60e51b815260206004820152605e6024820152600080516020615e3183398151915260448201527f69744e756d4261746368206d757374206265206c657373206f7220657175616c60648201527f207468616e2063757272656e744c617374566572696669656442617463680000608482015260a4016109fa565b806001600160401b0316886001600160401b031611613c315760405162461bcd60e51b815260206004820152605860248201527f506f6c79676f6e5a6b45564d3a3a5f766572696679426174636865733a20666960448201527f6e616c4e65774261746368206d75737420626520626967676572207468616e206064820152770c6eae4e4cadce898c2e6e8accae4d2ccd2cac884c2e8c6d60431b608482015260a4016109fa565b6000613c408a8a8a868b610f74565b90506000600080516020615e91833981519152600283604051613c639190615722565b602060405180830381855afa158015613c80573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190613ca3919061573e565b613cad919061576d565b606b546040805160208101825283815290516343753b4d60e01b81529293506001600160a01b03909116916343753b4d91613cf1918b918b918b9190600401615c69565b602060405180830381865afa158015613d0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d329190615ce3565b613d925760405162461bcd60e51b815260206004820152602b60248201527f506f6c79676f6e5a6b45564d3a3a5f766572696679426174636865733a20496e60448201526a3b30b634b210383937b7b360a91b60648201526084016109fa565b613dd533613da0858d61595e565b6001600160401b0316613db16126f0565b613dbb919061599d565b606554600160581b90046001600160a01b03169190614a31565b505050505050505050505050565b6000613ded6129d3565b905081600080613dfd848461595e565b6001600160401b031690505b836001600160401b0316836001600160401b031614613eaf576001600160401b03808416600090815260676020526040902060655460018201549192610100909104811691613e59911642615986565b1115613e94576001810154613e7e90600160401b90046001600160401b03168561595e565b613e91906001600160401b031684615b3e565b92505b60010154600160401b90046001600160401b03169250613e09565b6000613ebb8383615986565b905082811015613f35576000613ed18285615986565b9050600c8111613ee15780613ee4565b600c5b9050613ef181600361599d565b613efc90600a615de4565b606554613f15908390600160481b900461ffff16615de4565b607454613f22919061599d565b613f2c9190615ac1565b60745550613fc1565b6000613f418483615986565b9050600c8111613f515780613f54565b600c5b90506000613f6382600361599d565b613f6e90600a615de4565b606554613f87908490600160481b900461ffff16615de4565b607454613f94919061599d565b613f9e9190615ac1565b905080607454607454613fb1919061599d565b613fbb9190615ac1565b60745550505b505050505050565b6001600160401b03811615801590613ff657506072546001600160401b03600160401b9091048116908216115b801561401157506072546001600160401b0390811690821611155b6140835760405162461bcd60e51b815260206004820152603f60248201527f506f6c79676f6e5a6b45564d3a3a5f636f6e736f6c696461746550656e64696e60448201527f6753746174653a2070656e64696e6753746174654e756d20696e76616c69640060648201526084016109fa565b6001600160401b038181166000818152607160209081526040808320805460698054600160401b928390049098166001600160401b0319909816881790556002820154878652606d90945293829020929092556072805467ffffffffffffffff60401b19169390940292909217909255606c54600183015491516333d6247d60e01b815260048101929092529192916001600160a01b0316906333d6247d90602401600060405180830381600087803b15801561413f57600080fd5b505af1158015614153573d6000803e3d6000fd5b50505050826001600160401b0316816001600160401b03167f328d3c6c0fd6f1be0515e422f2d87e59f25922cbc2233568515a0c4bc3f8510e84600201546040516141a091815260200190565b60405180910390a3505050565b600054610100900460ff166142185760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016109fa565b6123b7335b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b607060009054906101000a90046001600160a01b03166001600160a01b0316632072f6c56040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156142bf57600080fd5b505af11580156142d3573d6000803e3d6000fd5b505050506123b7614a61565b60006001600160401b038a161561444f576072546001600160401b03908116908b1611156143975760405162461bcd60e51b81526020600482015260656024820152600080516020615e5183398151915260448201527f696e6753746174653a2070656e64696e6753746174654e756d206d757374206260648201527f65206c657373206f7220657175616c207468616e206c61737450656e64696e67608482015264537461746560d81b60a482015260c4016109fa565b506001600160401b03808a1660009081526071602052604090206002810154815490928a8116600160401b90920416146144495760405162461bcd60e51b81526020600482015260596024820152600080516020615e5183398151915260448201527f696e6753746174653a20696e69744e756d4261746368206d757374206d6174636064820152780d040e8d0ca40e0cadcc8d2dcce40e6e8c2e8ca40c4c2e8c6d603b1b608482015260a4016109fa565b50614588565b506001600160401b0387166000908152606d6020526040902054806144e35760405162461bcd60e51b81526020600482015260506024820152600080516020615e5183398151915260448201527f696e6753746174653a20696e69744e756d426174636820737461746520726f6f60648201526f1d08191bd95cc81b9bdd08195e1a5cdd60821b608482015260a4016109fa565b6069546001600160401b0390811690891611156145885760405162461bcd60e51b81526020600482015260636024820152600080516020615e5183398151915260448201527f696e6753746174653a20696e69744e756d4261746368206d757374206265206c60648201527f657373206f7220657175616c207468616e206c617374566572696669656442616084820152620e8c6d60eb1b60a482015260c4016109fa565b6072546001600160401b03908116908a16118015906145b85750896001600160401b0316896001600160401b0316115b80156145d957506072546001600160401b03600160401b9091048116908a16115b61464a5760405162461bcd60e51b81526020600482015260486024820152600080516020615e5183398151915260448201527f696e6753746174653a2066696e616c50656e64696e6753746174654e756d20696064820152671b98dbdc9c9958dd60c21b608482015260a4016109fa565b6001600160401b03898116600090815260716020526040902054600160401b90048116908816146147035760405162461bcd60e51b81526020600482015260636024820152600080516020615e5183398151915260448201527f696e6753746174653a2066696e616c4e65774261746368206d7573742062652060648201527f657175616c207468616e2063757272656e744c617374566572696669656442616084820152620e8c6d60eb1b60a482015260c4016109fa565b6000614712898989858a610f74565b90506000600080516020615e918339815191526002836040516147359190615722565b602060405180830381855afa158015614752573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190614775919061573e565b61477f919061576d565b606b546040805160208101825283815290516343753b4d60e01b81529293506001600160a01b03909116916343753b4d916147c3918a918a918a9190600401615c69565b602060405180830381865afa1580156147e0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906148049190615ce3565b61485e5760405162461bcd60e51b81526020600482015260376024820152600080516020615e5183398151915260448201527634b733a9ba30ba329d1024b73b30b634b210383937b7b360491b60648201526084016109fa565b6001600160401b038b16600090815260716020526040902060020154879003613dd55760405162461bcd60e51b815260206004820152605b6024820152600080516020615e5183398151915260448201527f696e6753746174653a2053746f72656420726f6f74206d75737420626520646960648201527f66666572656e74207468616e206e657720737461746520726f6f740000000000608482015260a4016109fa565b60655460ff166149255760405162461bcd60e51b81526004016109fa90615b56565b6065805460ff191690556040517f1e5e34eea33501aecf2ebec9fe0e884a40804275ea7fe10b2ba084c8374308b390600090a1565b60006149af826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316614abc9092919063ffffffff16565b805190915015614a2c57808060200190518101906149cd9190615ce3565b614a2c5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016109fa565b505050565b6040516001600160a01b038316602482015260448101829052614a2c90849063a9059cbb60e01b9060640161381b565b60655460ff1615614a845760405162461bcd60e51b81526004016109fa9061583f565b6065805460ff191660011790556040517f2261efe5aef6fedc1fd1550b25facc9181745623049c7901287030b9ad1a549790600090a1565b6060614acb8484600085614ad3565b949350505050565b606082471015614b345760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016109fa565b600080866001600160a01b03168587604051614b509190615722565b60006040518083038185875af1925050503d8060008114614b8d576040519150601f19603f3d011682016040523d82523d6000602084013e614b92565b606091505b5091509150614ba387838387614bae565b979650505050505050565b60608315614c1d578251600003614c16576001600160a01b0385163b614c165760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016109fa565b5081614acb565b614acb8383815115614c325781518083602001fd5b8060405162461bcd60e51b81526004016109fa9190614d15565b80356001600160401b0381168114614c6357600080fd5b919050565b600080600080600060a08688031215614c8057600080fd5b614c8986614c4c565b9450614c9760208701614c4c565b9350614ca560408701614c4c565b94979396509394606081013594506080013592915050565b60005b83811015614cd8578181015183820152602001614cc0565b8381111561355b5750506000910152565b60008151808452614d01816020860160208601614cbd565b601f01601f19169290920160200192915050565b602081526000614d286020830184614ce9565b9392505050565b8060408101831015614d4057600080fd5b92915050565b8060808101831015614d4057600080fd5b6000806000806000806000806101a0898b031215614d7457600080fd5b614d7d89614c4c565b9750614d8b60208a01614c4c565b9650614d9960408a01614c4c565b95506060890135945060808901359350614db68a60a08b01614d2f565b9250614dc58a60e08b01614d46565b9150614dd58a6101608b01614d2f565b90509295985092959890939650565b600060208284031215614df657600080fd5b813561ffff81168114614d2857600080fd5b600080600080600060a08688031215614e2057600080fd5b614e2986614c4c565b9450614e3760208701614c4c565b94979496505050506040830135926060810135926080909101359150565b6001600160a01b0391909116815260200190565b600060208284031215614e7b57600080fd5b614d2882614c4c565b634e487b7160e01b600052604160045260246000fd5b604051608081016001600160401b0381118282101715614ebc57614ebc614e84565b60405290565b604051606081016001600160401b0381118282101715614ebc57614ebc614e84565b604051601f8201601f191681016001600160401b0381118282101715614f0c57614f0c614e84565b604052919050565b60006001600160401b03821115614f2d57614f2d614e84565b5060051b60200190565b600082601f830112614f4857600080fd5b81356001600160401b03811115614f6157614f61614e84565b614f74601f8201601f1916602001614ee4565b818152846020838601011115614f8957600080fd5b816020850160208301376000918101602001919091529392505050565b60006020808385031215614fb957600080fd5b82356001600160401b0380821115614fd057600080fd5b818501915085601f830112614fe457600080fd5b8135614ff7614ff282614f14565b614ee4565b81815260059190911b8301840190848101908883111561501657600080fd5b8585015b838110156150af578035858111156150325760008081fd5b86016080818c03601f190181131561504a5760008081fd5b615052614e9a565b89830135888111156150645760008081fd5b6150728e8c83870101614f37565b8252506040808401358b830152606061508c818601614c4c565b8284015261509b848601614c4c565b90830152508552505091860191860161501a565b5098975050505050505050565b6001600160a01b0381168114611eda57600080fd5b6000602082840312156150e357600080fd5b8135614d28816150bc565b600080600080600060a0868803121561510657600080fd5b8535945060208601356001600160401b0381111561512357600080fd5b61512f88828901614f37565b9450506040860135925061514560608701614c4c565b91506080860135615155816150bc565b809150509295509295909350565b600080600080600080600080888a036101c081121561518157600080fd5b893561518c816150bc565b985060208a013561519c816150bc565b975060408a01356151ac816150bc565b965060608a01356151bc816150bc565b955060e0607f19820112156151d057600080fd5b5060808901935061016089013592506101808901356001600160401b03808211156151fa57600080fd5b6152068c838d01614f37565b93506101a08b013591508082111561521d57600080fd5b5061522a8b828c01614f37565b9150509295985092959890939650565b60008060008060008060008060006101c08a8c03121561525957600080fd5b6152628a614c4c565b985061527060208b01614c4c565b975061527e60408b01614c4c565b965061528c60608b01614c4c565b955060808a0135945060a08a013593506152a98b60c08c01614d2f565b92506152b98b6101008c01614d46565b91506152c98b6101808c01614d2f565b90509295985092959850929598565b6000602082840312156152ea57600080fd5b5035919050565b8015158114611eda57600080fd5b60006020828403121561531157600080fd5b8135614d28816152f1565b60006020828403121561532e57600080fd5b81356001600160401b0381111561534457600080fd5b614acb84828501614f37565b6000602080838503121561536357600080fd5b82356001600160401b038082111561537a57600080fd5b818501915085601f83011261538e57600080fd5b813561539c614ff282614f14565b81815260059190911b830184019084810190888311156153bb57600080fd5b8585015b838110156150af578035858111156153d75760008081fd5b86016060818c03601f19018113156153ef5760008081fd5b6153f7614ec2565b89830135888111156154095760008081fd5b6154178e8c83870101614f37565b8252506040808401358b83015261542f838501614c4c565b90820152855250509186019186016153bf565b6000806000806080858703121561545857600080fd5b61546185614c4c565b93506020850135925061547660408601614c4c565b915061548460608601614c4c565b905092959194509250565b600080604083850312156154a257600080fd5b82356001600160401b038111156154b857600080fd5b6154c485828601614f37565b95602094909401359450505050565b600080604083850312156154e657600080fd5b823591506154f660208401614c4c565b90509250929050565b60208082526058908201527f506f6c79676f6e5a6b45564d3a3a766572696679426174636865733a2070656e60408201527f64696e6753746174654e756d206d757374206265206c657373206f7220657175606082015277616c207468616e206c61737450656e64696e67537461746560401b608082015260a00190565b6020808252604c90820152600080516020615df183398151915260408201527f744e756d4261746368206d757374206d61746368207468652070656e64696e6760608201526b040e6e8c2e8ca40c4c2e8c6d60a31b608082015260a00190565b6020808252604390820152600080516020615df183398151915260408201527f744e756d426174636820737461746520726f6f7420646f6573206e6f742065786060820152621a5cdd60ea1b608082015260a00190565b6020808252605d90820152600080516020615df183398151915260408201527f744e756d4261746368206d757374206265206c657373206f7220657175616c2060608201527f7468616e2063757272656e744c61737456657269666965644261746368000000608082015260a00190565b60208082526057908201527f506f6c79676f6e5a6b45564d3a3a766572696679426174636865733a2066696e60408201527f616c4e65774261746368206d75737420626520626967676572207468616e20636060820152760eae4e4cadce898c2e6e8accae4d2ccd2cac884c2e8c6d604b1b608082015260a00190565b60008251615734818460208701614cbd565b9190910192915050565b60006020828403121561575057600080fd5b5051919050565b634e487b7160e01b600052601260045260246000fd5b60008261577c5761577c615757565b500690565b600181811c9082168061579557607f821691505b6020821081036157b557634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526023908201527f506f6c79676f6e5a6b45564d3a3a6f6e6c7941646d696e3a204f6e6c7920616460408201526236b4b760e91b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b60006001600160401b03808316818516808303821115615836576158366157fe565b01949350505050565b60208082526042908201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960408201527f53746174653a206f6e6c79206966206e6f7420656d657267656e637920737461606082015261746560f01b608082015260a00190565b634e487b7160e01b600052603260045260246000fd5b60006001600160401b038083168181036158d9576158d96157fe565b6001019392505050565b928352602083019190915260c01b6001600160c01b031916604082015260480190565b9485526020850193909352604084019190915260c01b6001600160c01b0319166060808401919091521b6001600160601b0319166068820152607c0190565b600060018201615957576159576157fe565b5060010190565b60006001600160401b038381169083168181101561597e5761597e6157fe565b039392505050565b600082821015615998576159986157fe565b500390565b60008160001904831182151516156159b7576159b76157fe565b500290565b601f821115614a2c57600081815260208120601f850160051c810160208610156159e35750805b601f850160051c820191505b81811015613fc1578281556001016159ef565b81516001600160401b03811115615a1b57615a1b614e84565b615a2f81615a298454615781565b846159bc565b602080601f831160018114615a645760008415615a4c5750858301515b600019600386901b1c1916600185901b178555613fc1565b600085815260208120601f198616915b82811015615a9357888601518255948401946001909101908401615a74565b5085821015615ab15787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600082615ad057615ad0615757565b500490565b60208082526043908201527f506f6c79676f6e5a6b45564d3a3a6973466f7263654261746368416c6c6f776560408201527f643a204f6e6c7920696620666f72636520626174636820697320617661696c61606082015262626c6560e81b608082015260a00190565b60008219821115615b5157615b516157fe565b500190565b6020808252603b908201527f456d657267656e63794d616e616765723a3a6966456d657267656e637953746160408201527f74653a206f6e6c7920696620656d657267656e63792073746174650000000000606082015260800190565b6020808252603c908201527f506f6c79676f6e5a6b45564d3a3a6f6e6c79547275737465644167677265676160408201527f746f723a204f6e6c7920747275737465642061676772656761746f7200000000606082015260800190565b8381526001600160a01b0383166020820152606060408201819052600090615c3a90830184614ce9565b95945050505050565b60006001600160401b0380841680615c5d57615c5d615757565b92169190910492915050565b61012081016040808784376000838201818152879190815b6002811015615ca157848483379084018281529284019290600101615c81565b5050828760c0870137610100850181815286935091505b6001811015615cd7578251825260209283019290910190600101615cb8565b50505095945050505050565b600060208284031215615cf557600080fd5b8151614d28816152f1565b600181815b80851115615d3b578160001904821115615d2157615d216157fe565b80851615615d2e57918102915b93841c9390800290615d05565b509250929050565b600082615d5257506001614d40565b81615d5f57506000614d40565b8160018114615d755760028114615d7f57615d9b565b6001915050614d40565b60ff841115615d9057615d906157fe565b50506001821b614d40565b5060208310610133831016604e8410600b8410161715615dbe575081810a614d40565b615dc88383615d00565b8060001904821115615ddc57615ddc6157fe565b029392505050565b6000614d288383615d4356fe506f6c79676f6e5a6b45564d3a3a766572696679426174636865733a20696e69506f6c79676f6e5a6b45564d3a3a6163746976617465456d657267656e637953506f6c79676f6e5a6b45564d3a3a5f766572696679426174636865733a20696e506f6c79676f6e5a6b45564d3a3a5f70726f766544697374696e637450656e64506f6c79676f6e5a6b45564d3a3a73657175656e6365466f726365426174636830644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001506f6c79676f6e5a6b45564d3a3a73657175656e6365426174636865733a2046a2646970667358221220167a8f9be9686096974434bdb06f09cd7d4921d903936f91eb32d732ac4f1e6564736f6c634300080f0033", + "bytecode": "0x608060405234801561001057600080fd5b50615edd80620000216000396000f3fe608060405234801561001057600080fd5b50600436106103925760003560e01c806396dc3d39116101e0578063cfa8ed4711610110578063e7a7ed02116100a8578063e7a7ed0214610905578063e8bf92ed1461091f578063eaeb077b14610932578063edc4112114610945578063f14916d614610958578063f2fde38b1461096b578063f851a4401461097e578063f8b823e414610991578063fe16564f1461099a57600080fd5b8063cfa8ed4714610860578063d02103ca1461087a578063d8d1091b1461088d578063d8f54db0146108a0578063d939b315146108b4578063dbc16976146108ce578063e0d17441146108d6578063e11f3f18146108e9578063e217cfd6146108fc57600080fd5b8063ab9fc5ef11610183578063ab9fc5ef14610759578063adc879e914610763578063afd23cbe1461077d578063b4d63f58146107a5578063b6b0b09714610805578063c0cad3021461081f578063c0ed84e014610832578063c89e42df1461083a578063cf1363061461084d57600080fd5b806396dc3d39146106dd57806399f5634e146106f05780639b796760146106f85780639c9f3dfe1461070b5780639eb831b91461071e5780639f0d039d14610726578063a3c573eb1461072e578063aa58bad61461074157600080fd5b80634a910e6a116102c6578063715018a61161025e578063715018a6146105e65780637215541a146105ee57806375c508b3146106015780637fcb365314610614578063837a473814610627578063841b24d7146106955780638b48931e146106af5780638c4a0af7146106b95780638da5cb5b146106cc57600080fd5b80634a910e6a1461052c5780635392c5e01461053f578063542028d51461055f5780635437988d14610567578063574f649e1461057a57806360943d6a1461058d5780636b8616ce146105a05780636ff512cc146105c0578063704b6c02146105d357600080fd5b80632d0889d3116103395780632d0889d314610475578063383b3be81461047f578063394218e9146104925780633c158267146104a5578063423fa856146104b857806345605267146104d2578063458c0477146104ec5780634834a343146104ff5780634a1a89a71461051257600080fd5b80630eaa86ea14610397578063107bf28c146103bd57806310a01a72146103d257806315064c96146103e75780631816b7e51461040457806319d8ac6114610417578063220d7899146104425780632987898314610455575b600080fd5b6103aa6103a5366004614c9c565b6109ad565b6040519081526020015b60405180910390f35b6103c5610b7c565b6040516103b49190614d49565b6103e56103e0366004614d8b565b610c0a565b005b6065546103f49060ff1681565b60405190151581526020016103b4565b6103e5610412366004614e18565b610e53565b60685461042a906001600160401b031681565b6040516001600160401b0390911681526020016103b4565b6103c5610450366004614e3c565b610f74565b606a54610468906001600160a01b031681565b6040516103b49190614e89565b6103aa620493e081565b6103f461048d366004614e9d565b611115565b6103e56104a0366004614e9d565b61115c565b6103e56104b3366004614fda565b611318565b60685461042a90600160401b90046001600160401b031681565b60685461042a90600160801b90046001600160401b031681565b60725461042a906001600160401b031681565b6103e561050d366004614d8b565b611adf565b60725461042a90600160401b90046001600160401b031681565b6103e561053a366004614e9d565b611e27565b6103aa61054d366004614e9d565b606d6020526000908152604090205481565b6103c5611edd565b6103e5610575366004615105565b611eea565b6103aa610588366004615122565b611f14565b6103e561059b366004615197565b611f57565b6103aa6105ae366004614e9d565b60666020526000908152604090205481565b6103e56105ce366004615105565b6122b2565b6103e56105e1366004615105565b612330565b6103e56123a5565b6103e56105fc366004614e9d565b6123b9565b6103e561060f36600461526e565b6125c0565b60695461042a906001600160401b031681565b61066a61063536600461530c565b6071602052600090815260409020805460018201546002909201546001600160401b0380831693600160401b90930416919084565b604080516001600160401b0395861681529490931660208501529183015260608201526080016103b4565b60725461042a90600160c01b90046001600160401b031681565b61042a62093a8081565b6103e56106c7366004615333565b61264f565b6033546001600160a01b0316610468565b6103e56106eb366004614e9d565b6126c6565b6103aa6126f0565b6103e5610706366004614e9d565b6127d8565b6103e5610719366004614e9d565b61280d565b6103aa600c81565b6074546103aa565b607054610468906001600160a01b031681565b60655461042a9061010090046001600160401b031681565b61042a6206978081565b606c5461042a90600160a81b90046001600160401b031681565b60655461079290600160481b900461ffff1681565b60405161ffff90911681526020016103b4565b6107e06107b3366004614e9d565b606760205260009081526040902080546001909101546001600160401b0380821691600160401b90041683565b604080519384526001600160401b0392831660208501529116908201526060016103b4565b60655461046890600160581b90046001600160a01b031681565b6103e561082d366004615350565b6129bb565b61042a6129d3565b6103e5610848366004615350565b612a20565b6103e561085b366004614e9d565b612a86565b60695461046890600160401b90046001600160a01b031681565b606c54610468906001600160a01b031681565b6103e561089b366004615384565b612b07565b606c546103f490600160a01b900460ff1681565b60725461042a90600160801b90046001600160401b031681565b6103e5612fc6565b6103e56108e4366004615476565b613060565b6103e56108f736600461526e565b6130d2565b61042a6103e881565b60685461042a90600160c01b90046001600160401b031681565b606b54610468906001600160a01b031681565b6103e56109403660046154c3565b613216565b6103e5610953366004614d8b565b61353f565b6103e5610966366004615105565b61365e565b6103e5610979366004615105565b6136d3565b607354610468906001600160a01b031681565b6103aa60745481565b6103e56109a8366004615507565b613749565b60008060006109ba6129d3565b90506001600160401b03881615610a57576072546001600160401b039081169089161115610a035760405162461bcd60e51b81526004016109fa90615533565b60405180910390fd5b6001600160401b038089166000908152607160205260409020600281015481549094509091898116600160401b9092041614610a515760405162461bcd60e51b81526004016109fa906155b1565b50610ac1565b6001600160401b0387166000908152606d6020526040902054915081610a8f5760405162461bcd60e51b81526004016109fa90615611565b806001600160401b0316876001600160401b03161115610ac15760405162461bcd60e51b81526004016109fa90615668565b806001600160401b0316866001600160401b031611610af25760405162461bcd60e51b81526004016109fa906156d9565b6000610b018888888689610f74565b90506000600080516020615e68833981519152600283604051610b249190615756565b602060405180830381855afa158015610b41573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190610b649190615772565b610b6e91906157a1565b9a9950505050505050505050565b606f8054610b89906157b5565b80601f0160208091040260200160405190810160405280929190818152602001828054610bb5906157b5565b8015610c025780601f10610bd757610100808354040283529160200191610c02565b820191906000526020600020905b815481529060010190602001808311610be557829003601f168201915b505050505081565b610c1261376b565b600080610c1d6129d3565b90506001600160401b038a1615610cb1576072546001600160401b03908116908b161115610c5d5760405162461bcd60e51b81526004016109fa90615533565b6001600160401b03808b1660009081526071602052604090206002810154815490945090918b8116600160401b9092041614610cab5760405162461bcd60e51b81526004016109fa906155b1565b50610d1b565b6001600160401b0389166000908152606d6020526040902054915081610ce95760405162461bcd60e51b81526004016109fa90615611565b806001600160401b0316896001600160401b03161115610d1b5760405162461bcd60e51b81526004016109fa90615668565b806001600160401b0316886001600160401b031611610d4c5760405162461bcd60e51b81526004016109fa906156d9565b6000610d5b8a8a8a868b610f74565b606980546001600160401b0319166001600160401b038c81169182179092556000908152606d602052604090208990556072549192501615610da857607280546001600160801b03191690555b606c546040516333d6247d60e01b8152600481018a90526001600160a01b03909116906333d6247d90602401600060405180830381600087803b158015610dee57600080fd5b505af1158015610e02573d6000803e3d6000fd5b50506040518981523392506001600160401b038c1691507f0c0ce073a7d7b5850c04ccc4b20ee7d3179d5f57d0ac44399565792c0f72fce79060200160405180910390a35050505050505050505050565b6073546001600160a01b03163314610e7d5760405162461bcd60e51b81526004016109fa906157ef565b6103e88161ffff1610158015610e9857506104008161ffff16105b610f1d5760405162461bcd60e51b815260206004820152604a60248201527f506f6c79676f6e5a6b45564d3a3a7365744d756c7469706c696572426174636860448201527f4665653a206e65774d756c7469706c696572426174636846656520696e636f72606482015269726563742072616e676560b01b608482015260a4016109fa565b6065805461ffff60481b1916600160481b61ffff8416908102919091179091556040519081527f7019933d795eba185c180209e8ae8bffbaa25bcef293364687702c31f4d302c5906020015b60405180910390a150565b6001600160401b03808616600081815260676020526040808220549388168252902054606092911580610fa657508115155b61101a576040805162461bcd60e51b81526020600482015260248101919091527f506f6c79676f6e5a6b45564d3a3a676574496e707574536e61726b427974657360448201527f3a206f6c64416363496e7075744861736820646f6573206e6f7420657869737460648201526084016109fa565b8061108f576040805162461bcd60e51b81526020600482015260248101919091527f506f6c79676f6e5a6b45564d3a3a676574496e707574536e61726b427974657360448201527f3a206e6577416363496e7075744861736820646f6573206e6f7420657869737460648201526084016109fa565b606c54604080516001600160601b03193360601b166020820152603481019790975260548701939093526001600160c01b031960c0998a1b81166074880152600160a81b909104891b8116607c870152608486019490945260a485015260c4840194909452509290931b90911660e4830152805180830360cc01815260ec909201905290565b6072546001600160401b038281166000908152607160205260408120549092429261114b92600160801b90920481169116615848565b6001600160401b0316111592915050565b6073546001600160a01b031633146111865760405162461bcd60e51b81526004016109fa906157ef565b62093a806001600160401b038216111561121f5760405162461bcd60e51b815260206004820152604e60248201527f506f6c79676f6e5a6b45564d3a3a73657454727573746564416767726567617460448201527f6f7254696d656f75743a20457863656564206d61782068616c7420616767726560648201526d19d85d1a5bdb881d1a5b595bdd5d60921b608482015260a4016109fa565b60655460ff166112c2576072546001600160401b03600160c01b9091048116908216106112c25760405162461bcd60e51b8152602060048201526044602482018190527f506f6c79676f6e5a6b45564d3a3a736574547275737465644167677265676174908201527f6f7254696d656f75743a204e65772074696d656f7574206d757374206265206c60648201526337bbb2b960e11b608482015260a4016109fa565b607280546001600160c01b0316600160c01b6001600160401b038416908102919091179091556040519081527f1f4fa24c2e4bad19a7f3ec5c5485f70d46c798461c2e684f55bbd0fc661373a190602001610f69565b60655460ff161561133b5760405162461bcd60e51b81526004016109fa90615873565b606954600160401b90046001600160a01b031633146113c25760405162461bcd60e51b815260206004820152603a60248201527f506f6c79676f6e5a6b45564d3a3a6f6e6c795472757374656453657175656e6360448201527f65723a204f6e6c7920747275737465642073657175656e63657200000000000060648201526084016109fa565b8051806114375760405162461bcd60e51b815260206004820152603d60248201527f506f6c79676f6e5a6b45564d3a3a73657175656e6365426174636865733a204160448201527f74206c65617374206d7573742073657175656e6365203120626174636800000060648201526084016109fa565b6103e881106114b0576040805162461bcd60e51b81526020600482015260248101919091527f506f6c79676f6e5a6b45564d3a3a73657175656e6365426174636865733a204360448201527f616e6e6f742073657175656e63652074686174206d616e79206261746368657360648201526084016109fa565b6068546001600160401b03600160401b82048116600081815260676020526040812054838516949293600160801b90930490921691905b85811015611915576000878281518110611503576115036158db565b60200260200101519050600081606001516001600160401b03161115611693578361152d816158f1565b94505060008160000151805190602001208260200151836060015160405160200161155a93929190615917565b60408051601f1981840301815291815281516020928301206001600160401b0388166000908152606690935291205490915081146115ee5760405162461bcd60e51b815260206004820152603d6024820152600080516020615e8883398151915260448201527f6f7263656420626174636865732064617461206d757374206d6174636800000060648201526084016109fa565b81606001516001600160401b031682604001516001600160401b0316101561168d5760405162461bcd60e51b81526020600482015260586024820152600080516020615e8883398151915260448201527f6f7263656420626174636865732074696d657374616d70206d757374206265206064820152773134b3b3b2b91037b91032b8bab0b6103a3430b71036b4b760411b608482015260a4016109fa565b50611808565b6020810151158061171c5750606c5460208201516040516312bd9b1960e11b81526001600160a01b039092169163257b3632916116d69160040190815260200190565b6020604051808303816000875af11580156116f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117199190615772565b15155b61178e5760405162461bcd60e51b815260206004820152603a60248201527f506f6c79676f6e5a6b45564d3a3a73657175656e6365426174636865733a204760448201527f6c6f62616c206578697420726f6f74206d75737420657869737400000000000060648201526084016109fa565b805151620493e0116118085760405162461bcd60e51b815260206004820152603a60248201527f506f6c79676f6e5a6b45564d3a3a73657175656e6365426174636865733a205460448201527f72616e73616374696f6e73206279746573206f766572666c6f7700000000000060648201526084016109fa565b856001600160401b031681604001516001600160401b03161015801561183b57504281604001516001600160401b031611155b6118ad5760405162461bcd60e51b815260206004820152603d60248201527f506f6c79676f6e5a6b45564d3a3a73657175656e6365426174636865733a205460448201527f696d657374616d70206d75737420626520696e736964652072616e676500000060648201526084016109fa565b805180516020918201208183015160408085015190516118d494889493929133910161593a565b60405160208183030381529060405280519060200120925084806118f7906158f1565b9550508060400151955050808061190d90615979565b9150506114e7565b506068546001600160401b03600160c01b909104811690831611156119885760405162461bcd60e51b81526020600482015260356024820152600080516020615e888339815191526044820152746f7263652062617463686573206f766572666c6f7760581b60648201526084016109fa565b6068546000906119a890600160801b90046001600160401b031684615992565b6119bb906001600160401b0316876159ba565b60408051606081018252848152426001600160401b03908116602080840191825260688054600160401b9081900485168688019081528c861660008181526067909552979093209551865592516001909501805492519585166001600160801b03199384161795851684029590951790945583548b841691161793029290921767ffffffffffffffff60801b1916600160801b92871692909202919091179055607454909150611a9090339030908490611a7591906159d1565b606554600160581b90046001600160a01b03169291906137c5565b611a98613830565b606854604051600160401b9091046001600160401b0316907f303446e6a8cb73c83dff421c0b1d5e5ce0719dab1bff13660fc254e58cc17fce90600090a250505050505050565b60655460ff1615611b025760405162461bcd60e51b81526004016109fa90615873565b6072546001600160401b038781166000908152606760205260409020600101544292611b3992600160c01b90910481169116615848565b6001600160401b03161115611bc25760405162461bcd60e51b815260206004820152604360248201527f506f6c79676f6e5a6b45564d3a3a766572696679426174636865733a2054727560448201527f737465642061676772656761746f722074696d656f7574206e6f7420657870696064820152621c995960ea1b608482015260a4016109fa565b6103e8611bcf8888615992565b6001600160401b031610611c4b5760405162461bcd60e51b815260206004820152603c60248201527f506f6c79676f6e5a6b45564d3a3a766572696679426174636865733a2043616e60448201527f6e6f74207665726966792074686174206d616e7920626174636865730000000060648201526084016109fa565b611c5b88888888888888886138d0565b611c6486613dc1565b607254600160801b90046001600160401b0316600003611d2b57606980546001600160401b0319166001600160401b038881169182179092556000908152606d602052604090208590556072541615611cc857607280546001600160801b03191690555b606c546040516333d6247d60e01b8152600481018790526001600160a01b03909116906333d6247d90602401600060405180830381600087803b158015611d0e57600080fd5b505af1158015611d22573d6000803e3d6000fd5b50505050611ddc565b611d33613830565b607280546001600160401b0316906000611d4c836158f1565b82546001600160401b039182166101009390930a92830292820219169190911790915560408051608081018252428316815289831660208083019182528284018b8152606084018b8152607254871660009081526071909352949091209251835492518616600160401b026001600160801b03199093169516949094171781559151600183015551600290910155505b60405184815233906001600160401b038816907f9c72852172521097ba7e1482e6b44b351323df0155f97f4ea18fcec28e1f5966906020015b60405180910390a35050505050505050565b606a546001600160a01b03163314611ed157611e4281611115565b611ed15760405162461bcd60e51b815260206004820152605460248201527f506f6c79676f6e5a6b45564d3a3a636f6e736f6c696461746550656e64696e6760448201527f53746174653a2050656e64696e67207374617465206973206e6f7420726561646064820152731e481d1bc818994818dbdb9cdbdb1a59185d195960621b608482015260a4016109fa565b611eda81613fa7565b50565b606e8054610b89906157b5565b611ef261376b565b606b80546001600160a01b0319166001600160a01b0392909216919091179055565b6000858580519060200120858585604051602001611f3695949392919061593a565b60405160208183030381529060405280519060200120905095945050505050565b600054610100900460ff1615808015611f775750600054600160ff909116105b80611f915750303b158015611f91575060005460ff166001145b611ff45760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016109fa565b6000805460ff191660011790558015612017576000805461ff0019166101001790555b606c80546001600160a01b03199081166001600160a01b038c81169190911790925560658054600160581b600160f81b031916600160581b8c851602179055606b805482168a84161790556070805490911691881691909117905561207f6020860186615105565b607380546001600160a01b0319166001600160a01b03929092169190911790556120af6060860160408701615105565b606980546001600160a01b0392909216600160401b02600160401b600160e01b03199092169190911790556120ea60c0860160a08701615105565b606a80546001600160a01b0319166001600160a01b039290921691909117905560008052606d6020527fda90043ba5b4096ba14704bc227ab0d3167da15b887e62ab2e76e37daa71135684905561214760e0860160c08701614e9d565b607280546001600160401b0392909216600160c01b026001600160c01b0390921691909117905561217e6040860160208701614e9d565b606c80546001600160401b0392909216600160a81b0267ffffffffffffffff60a81b199092169190911790556121ba6080860160608701614e9d565b607280546001600160401b0392909216600160801b0267ffffffffffffffff60801b199092169190911790556121f660a0860160808701615333565b606c8054911515600160a01b0260ff60a01b19909216919091179055606e61221e8482615a36565b50606f61222b8382615a36565b50670de0b6b3a7640000607455606580546affffffffffffffffffff0019166a03ea00000000000007080017905561226161418b565b80156122a7576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050565b6073546001600160a01b031633146122dc5760405162461bcd60e51b81526004016109fa906157ef565b60698054600160401b600160e01b031916600160401b6001600160a01b038416021790556040517ff54144f9611984021529f814a1cb6a41e22c58351510a0d9f7e822618abb9cc090610f69908390614e89565b6073546001600160a01b0316331461235a5760405162461bcd60e51b81526004016109fa906157ef565b607380546001600160a01b0319166001600160a01b0383161790556040517f5a272403b402d892977df56625f4164ccaf70ca3863991c43ecfe76a6905b0a190610f69908390614e89565b6123ad61376b565b6123b760006141fb565b565b6033546001600160a01b031633146125b85760006123d56129d3565b9050806001600160401b0316826001600160401b03161161244c5760405162461bcd60e51b815260206004820152603c6024820152600080516020615de883398151915260448201527f746174653a20426174636820616c72656164792076657269666965640000000060648201526084016109fa565b6068546001600160401b03600160401b90910481169083161180159061248e57506001600160401b038083166000908152606760205260409020600101541615155b6125075760405162461bcd60e51b81526020600482015260506024820152600080516020615de883398151915260448201527f746174653a204261746368206e6f742073657175656e636564206f72206e6f7460648201526f20656e64206f662073657175656e636560801b608482015260a4016109fa565b6001600160401b0380831660009081526067602052604090206001015442916125359162093a809116615848565b6001600160401b031611156125b65760405162461bcd60e51b815260206004820152604d6024820152600080516020615de883398151915260448201527f746174653a204167677265676174696f6e2068616c742074696d656f7574206960648201526c1cc81b9bdd08195e1c1a5c9959609a1b608482015260a4016109fa565b505b611eda61424d565b60655460ff16156125e35760405162461bcd60e51b81526004016109fa90615873565b6125f48989898989898989896142bd565b6001600160401b0386166000908152606d60209081526040918290205482519081529081018690527f1f44c21118c4603cfb4e1b621dbcfa2b73efcececee2b99b620b2953d33a7010910160405180910390a16122a761424d565b6073546001600160a01b031633146126795760405162461bcd60e51b81526004016109fa906157ef565b606c8054821515600160a01b0260ff60a01b199091161790556040517fbacda50a4a8575be1d91a7ebe29ee45056f3a94f12a2281eb6b43afa33bcefe690610f6990831515815260200190565b6126ce61376b565b606980546001600160401b0319166001600160401b0392909216919091179055565b6065546040516370a0823160e01b81526000918291600160581b9091046001600160a01b0316906370a082319061272b903090600401614e89565b602060405180830381865afa158015612748573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061276c9190615772565b905060006127786129d3565b6068546001600160401b03600160401b82048116916127a891600160801b8204811691600160c01b900416615992565b6127b29190615848565b6127bc9190615992565b6001600160401b031690506127d18183615af5565b9250505090565b6127e061376b565b606880546001600160401b03909216600160401b0267ffffffffffffffff60401b19909216919091179055565b6073546001600160a01b031633146128375760405162461bcd60e51b81526004016109fa906157ef565b62093a806001600160401b03821611156128cb5760405162461bcd60e51b815260206004820152604960248201527f506f6c79676f6e5a6b45564d3a3a73657450656e64696e67537461746554696d60448201527f656f75743a20457863656564206d61782068616c74206167677265676174696f6064820152681b881d1a5b595bdd5d60ba1b608482015260a4016109fa565b60655460ff16612960576072546001600160401b03600160801b9091048116908216106129605760405162461bcd60e51b815260206004820152603f60248201527f506f6c79676f6e5a6b45564d3a3a73657450656e64696e67537461746554696d60448201527f656f75743a204e65772074696d656f7574206d757374206265206c6f7765720060648201526084016109fa565b6072805467ffffffffffffffff60801b1916600160801b6001600160401b038416908102919091179091556040519081527fc4121f4e22c69632ebb7cf1f462be0511dc034f999b52013eddfb24aab765c7590602001610f69565b6129c361376b565b606f6129cf8282615a36565b5050565b6072546000906001600160401b031615612a1057506072546001600160401b03908116600090815260716020526040902054600160401b90041690565b506069546001600160401b031690565b6073546001600160a01b03163314612a4a5760405162461bcd60e51b81526004016109fa906157ef565b606e612a568282615a36565b507f6b8f723a4c7a5335cafae8a598a0aa0301be1387c037dccc085b62add6448b2081604051610f699190614d49565b6073546001600160a01b03163314612ab05760405162461bcd60e51b81526004016109fa906157ef565b6065805468ffffffffffffffff0019166101006001600160401b038416908102919091179091556040519081527f03a12f7e53d2a9e31a9e913d85c12c4c38feb92abe003c111329298af088437f90602001610f69565b60655460ff1615612b2a5760405162461bcd60e51b81526004016109fa90615873565b606c54600160a01b900460ff161515600114612b585760405162461bcd60e51b81526004016109fa90615b09565b805180612bbb5760405162461bcd60e51b815260206004820152603f6024820152600080516020615e4883398151915260448201527f65733a204d75737420666f726365206174206c6561737420312062617463680060648201526084016109fa565b6103e88110612c2c5760405162461bcd60e51b81526020600482015260436024820152600080516020615e4883398151915260448201527f65733a2043616e6e6f74207665726966792074686174206d616e79206261746360648201526268657360e81b608482015260a4016109fa565b6068546001600160401b03600160c01b8204811691612c54918491600160801b900416615b72565b1115612cb05760405162461bcd60e51b81526020600482015260376024820152600080516020615e48833981519152604482015276195cce88119bdc98d94818985d18da081a5b9d985b1a59604a1b60648201526084016109fa565b6068546001600160401b03600160401b820481166000818152606760205260408120549193600160801b9004909216915b84811015612ede576000868281518110612cfd57612cfd6158db565b602002602001015190508380612d12906158f1565b945050600081600001518051906020012082602001518360400151604051602001612d3f93929190615917565b60408051601f1981840301815291815281516020928301206001600160401b038816600090815260669093529120549091508114612dde5760405162461bcd60e51b81526020600482015260426024820152600080516020615e4883398151915260448201527f65733a20466f7263656420626174636865732064617461206d757374206d61746064820152610c6d60f31b608482015260a4016109fa565b612de96001886159ba565b8303612e805742620697808360400151612e039190615848565b6001600160401b03161115612e805760405162461bcd60e51b81526020600482015260496024820152600080516020615e4883398151915260448201527f65733a20466f72636564206261746368206973206e6f7420696e2074696d656f6064820152681d5d081c195c9a5bd960ba1b608482015260a4016109fa565b8151805160209182012081840151604051612ea39388939291429133910161593a565b6040516020818303038152906040528051906020012093508580612ec6906158f1565b96505050508080612ed690615979565b915050612ce1565b50606880546001600160401b031916426001600160401b03908116918217808455604080516060810182528681526020808201958652600160401b9384900485168284019081528a861660008181526067909352848320935184559651600193909301805491519387166001600160801b0319909216919091179286168502929092179091558554600160401b600160c01b03191694830267ffffffffffffffff60801b191694909417600160801b88851602179485905551930416917f648a61dd2438f072f5a1960939abd30f37aea80d2e94c9792ad142d3e0a490a49190a25050505050565b6073546001600160a01b03163314612ff05760405162461bcd60e51b81526004016109fa906157ef565b607060009054906101000a90046001600160a01b03166001600160a01b031663dbc169766040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561304057600080fd5b505af1158015613054573d6000803e3d6000fd5b505050506123b76148e1565b61306861376b565b604080516060810182529384526001600160401b03928316602080860191825292841685830190815295841660009081526067909352912092518355516001909201805493518216600160401b026001600160801b03199094169290911691909117919091179055565b606a546001600160a01b031633146130fc5760405162461bcd60e51b81526004016109fa90615b8a565b61310d8989898989898989896142bd565b606980546001600160401b0319166001600160401b038881169182179092556000908152606d60205260409020859055607254161561315757607280546001600160801b03191690555b606c546040516333d6247d60e01b8152600481018790526001600160a01b03909116906333d6247d90602401600060405180830381600087803b15801561319d57600080fd5b505af11580156131b1573d6000803e3d6000fd5b5050607280546001600160c01b031661127560c71b179055505060405184815233906001600160401b038816907fcc1b5520188bf1dd3e63f98164b577c4d75c11a619ddea692112f0d1aec4cf729060200160405180910390a3505050505050505050565b60655460ff16156132395760405162461bcd60e51b81526004016109fa90615873565b606c54600160a01b900460ff1615156001146132675760405162461bcd60e51b81526004016109fa90615b09565b600061327260745490565b9050818111156132d75760405162461bcd60e51b815260206004820152602a60248201527f506f6c79676f6e5a6b45564d3a3a666f72636542617463683a204e6f7420656e6044820152696f756768206d6174696360b01b60648201526084016109fa565b620493e08351106133485760405162461bcd60e51b815260206004820152603560248201527f506f6c79676f6e5a6b45564d3a3a666f72636542617463683a205472616e73616044820152746374696f6e73206279746573206f766572666c6f7760581b60648201526084016109fa565b60655461336790600160581b90046001600160a01b03163330846137c5565b606c5460408051633ed691ef60e01b815290516000926001600160a01b031691633ed691ef9160048083019260209291908290030181865afa1580156133b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133d59190615772565b60688054919250600160c01b9091046001600160401b03169060186133f9836158f1565b91906101000a8154816001600160401b0302191690836001600160401b03160217905550508380519060200120814260405160200161343a93929190615917565b60408051808303601f190181529181528151602092830120606854600160c01b90046001600160401b0316600090815260669093529120553233036134de57606854604080518381523360208201526060918101829052600091810191909152600160c01b9091046001600160401b0316907ff94bb37db835f1ab585ee00041849a09b12cd081d77fa15ca070757619cbc9319060800160405180910390a2613539565b606860189054906101000a90046001600160401b03166001600160401b03167ff94bb37db835f1ab585ee00041849a09b12cd081d77fa15ca070757619cbc93182338760405161353093929190615be7565b60405180910390a25b50505050565b606a546001600160a01b031633146135695760405162461bcd60e51b81526004016109fa90615b8a565b61357988888888888888886138d0565b606980546001600160401b0319166001600160401b038881169182179092556000908152606d6020526040902085905560725416156135c357607280546001600160801b03191690555b606c546040516333d6247d60e01b8152600481018790526001600160a01b03909116906333d6247d90602401600060405180830381600087803b15801561360957600080fd5b505af115801561361d573d6000803e3d6000fd5b50506040518681523392506001600160401b03891691507f0c0ce073a7d7b5850c04ccc4b20ee7d3179d5f57d0ac44399565792c0f72fce790602001611e15565b6073546001600160a01b031633146136885760405162461bcd60e51b81526004016109fa906157ef565b606a80546001600160a01b0319166001600160a01b0383161790556040517f61f8fec29495a3078e9271456f05fb0707fd4e41f7661865f80fc437d06681ca90610f69908390614e89565b6136db61376b565b6001600160a01b0381166137405760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016109fa565b611eda816141fb565b61375161376b565b6001600160401b03166000908152606d6020526040902055565b6033546001600160a01b031633146123b75760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016109fa565b6040516001600160a01b03808516602483015283166044820152606481018290526135399085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915261498e565b6072546001600160401b03600160401b82048116911611156123b75760725460009061386d90600160401b90046001600160401b03166001615848565b905061387881611115565b15611eda5760725460009060029061389a9084906001600160401b0316615992565b6138a49190615c1a565b6138ae9083615848565b90506138b981611115565b156138c7576129cf81613fa7565b6129cf82613fa7565b6000806138db6129d3565b90506001600160401b038a1615613a41576072546001600160401b03908116908b1611156139935760405162461bcd60e51b815260206004820152605960248201527f506f6c79676f6e5a6b45564d3a3a5f766572696679426174636865733a20706560448201527f6e64696e6753746174654e756d206d757374206265206c657373206f7220657160648201527875616c207468616e206c61737450656e64696e67537461746560381b608482015260a4016109fa565b6001600160401b03808b1660009081526071602052604090206002810154815490945090918b8116600160401b9092041614613a3b5760405162461bcd60e51b815260206004820152604d6024820152600080516020615e0883398151915260448201527f69744e756d4261746368206d757374206d61746368207468652070656e64696e60648201526c0ce40e6e8c2e8ca40c4c2e8c6d609b1b608482015260a4016109fa565b50613b67565b6001600160401b0389166000908152606d6020526040902054915081613acb5760405162461bcd60e51b815260206004820152604460248201819052600080516020615e08833981519152908201527f69744e756d426174636820737461746520726f6f7420646f6573206e6f7420656064820152631e1a5cdd60e21b608482015260a4016109fa565b806001600160401b0316896001600160401b03161115613b675760405162461bcd60e51b815260206004820152605e6024820152600080516020615e0883398151915260448201527f69744e756d4261746368206d757374206265206c657373206f7220657175616c60648201527f207468616e2063757272656e744c617374566572696669656442617463680000608482015260a4016109fa565b806001600160401b0316886001600160401b031611613c0f5760405162461bcd60e51b815260206004820152605860248201527f506f6c79676f6e5a6b45564d3a3a5f766572696679426174636865733a20666960448201527f6e616c4e65774261746368206d75737420626520626967676572207468616e206064820152770c6eae4e4cadce898c2e6e8accae4d2ccd2cac884c2e8c6d60431b608482015260a4016109fa565b6000613c1e8a8a8a868b610f74565b90506000600080516020615e68833981519152600283604051613c419190615756565b602060405180830381855afa158015613c5e573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190613c819190615772565b613c8b91906157a1565b606b546040805160208101825283815290516343753b4d60e01b81529293506001600160a01b03909116916343753b4d91613ccf918b918b918b9190600401615c40565b602060405180830381865afa158015613cec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d109190615cba565b613d705760405162461bcd60e51b815260206004820152602b60248201527f506f6c79676f6e5a6b45564d3a3a5f766572696679426174636865733a20496e60448201526a3b30b634b210383937b7b360a91b60648201526084016109fa565b613db333613d7e858d615992565b6001600160401b0316613d8f6126f0565b613d9991906159d1565b606554600160581b90046001600160a01b03169190614a65565b505050505050505050505050565b6000613dcb6129d3565b905081600080613ddb8484615992565b6001600160401b031690505b836001600160401b0316836001600160401b031614613e8d576001600160401b03808416600090815260676020526040902060655460018201549192610100909104811691613e379116426159ba565b1115613e72576001810154613e5c90600160401b90046001600160401b031685615992565b613e6f906001600160401b031684615b72565b92505b60010154600160401b90046001600160401b03169250613de7565b6000613e9983836159ba565b905082811015613f13576000613eaf82856159ba565b9050600c8111613ebf5780613ec2565b600c5b9050613ecf8160036159d1565b613eda90600a615dbb565b606554613ef3908390600160481b900461ffff16615dbb565b607454613f0091906159d1565b613f0a9190615af5565b60745550613f9f565b6000613f1f84836159ba565b9050600c8111613f2f5780613f32565b600c5b90506000613f418260036159d1565b613f4c90600a615dbb565b606554613f65908490600160481b900461ffff16615dbb565b607454613f7291906159d1565b613f7c9190615af5565b905080607454607454613f8f91906159d1565b613f999190615af5565b60745550505b505050505050565b6001600160401b03811615801590613fd457506072546001600160401b03600160401b9091048116908216115b8015613fef57506072546001600160401b0390811690821611155b6140615760405162461bcd60e51b815260206004820152603f60248201527f506f6c79676f6e5a6b45564d3a3a5f636f6e736f6c696461746550656e64696e60448201527f6753746174653a2070656e64696e6753746174654e756d20696e76616c69640060648201526084016109fa565b6001600160401b038181166000818152607160209081526040808320805460698054600160401b928390049098166001600160401b0319909816881790556002820154878652606d90945293829020929092556072805467ffffffffffffffff60401b19169390940292909217909255606c54600183015491516333d6247d60e01b815260048101929092529192916001600160a01b0316906333d6247d90602401600060405180830381600087803b15801561411d57600080fd5b505af1158015614131573d6000803e3d6000fd5b50505050826001600160401b0316816001600160401b03167f328d3c6c0fd6f1be0515e422f2d87e59f25922cbc2233568515a0c4bc3f8510e846002015460405161417e91815260200190565b60405180910390a3505050565b600054610100900460ff166141f65760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016109fa565b6123b7335b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b607060009054906101000a90046001600160a01b03166001600160a01b0316632072f6c56040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561429d57600080fd5b505af11580156142b1573d6000803e3d6000fd5b505050506123b7614a95565b60006001600160401b038a161561442d576072546001600160401b03908116908b1611156143755760405162461bcd60e51b81526020600482015260656024820152600080516020615e2883398151915260448201527f696e6753746174653a2070656e64696e6753746174654e756d206d757374206260648201527f65206c657373206f7220657175616c207468616e206c61737450656e64696e67608482015264537461746560d81b60a482015260c4016109fa565b506001600160401b03808a1660009081526071602052604090206002810154815490928a8116600160401b90920416146144275760405162461bcd60e51b81526020600482015260596024820152600080516020615e2883398151915260448201527f696e6753746174653a20696e69744e756d4261746368206d757374206d6174636064820152780d040e8d0ca40e0cadcc8d2dcce40e6e8c2e8ca40c4c2e8c6d603b1b608482015260a4016109fa565b50614566565b506001600160401b0387166000908152606d6020526040902054806144c15760405162461bcd60e51b81526020600482015260506024820152600080516020615e2883398151915260448201527f696e6753746174653a20696e69744e756d426174636820737461746520726f6f60648201526f1d08191bd95cc81b9bdd08195e1a5cdd60821b608482015260a4016109fa565b6069546001600160401b0390811690891611156145665760405162461bcd60e51b81526020600482015260636024820152600080516020615e2883398151915260448201527f696e6753746174653a20696e69744e756d4261746368206d757374206265206c60648201527f657373206f7220657175616c207468616e206c617374566572696669656442616084820152620e8c6d60eb1b60a482015260c4016109fa565b6072546001600160401b03908116908a16118015906145965750896001600160401b0316896001600160401b0316115b80156145b757506072546001600160401b03600160401b9091048116908a16115b6146285760405162461bcd60e51b81526020600482015260486024820152600080516020615e2883398151915260448201527f696e6753746174653a2066696e616c50656e64696e6753746174654e756d20696064820152671b98dbdc9c9958dd60c21b608482015260a4016109fa565b6001600160401b03898116600090815260716020526040902054600160401b90048116908816146146e15760405162461bcd60e51b81526020600482015260636024820152600080516020615e2883398151915260448201527f696e6753746174653a2066696e616c4e65774261746368206d7573742062652060648201527f657175616c207468616e2063757272656e744c617374566572696669656442616084820152620e8c6d60eb1b60a482015260c4016109fa565b60006146f0898989858a610f74565b90506000600080516020615e688339815191526002836040516147139190615756565b602060405180830381855afa158015614730573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906147539190615772565b61475d91906157a1565b606b546040805160208101825283815290516343753b4d60e01b81529293506001600160a01b03909116916343753b4d916147a1918a918a918a9190600401615c40565b602060405180830381865afa1580156147be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906147e29190615cba565b61483c5760405162461bcd60e51b81526020600482015260376024820152600080516020615e2883398151915260448201527634b733a9ba30ba329d1024b73b30b634b210383937b7b360491b60648201526084016109fa565b6001600160401b038b16600090815260716020526040902060020154879003613db35760405162461bcd60e51b815260206004820152605b6024820152600080516020615e2883398151915260448201527f696e6753746174653a2053746f72656420726f6f74206d75737420626520646960648201527f66666572656e74207468616e206e657720737461746520726f6f740000000000608482015260a4016109fa565b60655460ff166149595760405162461bcd60e51b815260206004820152603b60248201527f456d657267656e63794d616e616765723a3a6966456d657267656e637953746160448201527f74653a206f6e6c7920696620656d657267656e6379207374617465000000000060648201526084016109fa565b6065805460ff191690556040517f1e5e34eea33501aecf2ebec9fe0e884a40804275ea7fe10b2ba084c8374308b390600090a1565b60006149e3826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316614af09092919063ffffffff16565b805190915015614a605780806020019051810190614a019190615cba565b614a605760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016109fa565b505050565b6040516001600160a01b038316602482015260448101829052614a6090849063a9059cbb60e01b906064016137f9565b60655460ff1615614ab85760405162461bcd60e51b81526004016109fa90615873565b6065805460ff191660011790556040517f2261efe5aef6fedc1fd1550b25facc9181745623049c7901287030b9ad1a549790600090a1565b6060614aff8484600085614b07565b949350505050565b606082471015614b685760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016109fa565b600080866001600160a01b03168587604051614b849190615756565b60006040518083038185875af1925050503d8060008114614bc1576040519150601f19603f3d011682016040523d82523d6000602084013e614bc6565b606091505b5091509150614bd787838387614be2565b979650505050505050565b60608315614c51578251600003614c4a576001600160a01b0385163b614c4a5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016109fa565b5081614aff565b614aff8383815115614c665781518083602001fd5b8060405162461bcd60e51b81526004016109fa9190614d49565b80356001600160401b0381168114614c9757600080fd5b919050565b600080600080600060a08688031215614cb457600080fd5b614cbd86614c80565b9450614ccb60208701614c80565b9350614cd960408701614c80565b94979396509394606081013594506080013592915050565b60005b83811015614d0c578181015183820152602001614cf4565b838111156135395750506000910152565b60008151808452614d35816020860160208601614cf1565b601f01601f19169290920160200192915050565b602081526000614d5c6020830184614d1d565b9392505050565b8060408101831015614d7457600080fd5b92915050565b8060808101831015614d7457600080fd5b6000806000806000806000806101a0898b031215614da857600080fd5b614db189614c80565b9750614dbf60208a01614c80565b9650614dcd60408a01614c80565b95506060890135945060808901359350614dea8a60a08b01614d63565b9250614df98a60e08b01614d7a565b9150614e098a6101608b01614d63565b90509295985092959890939650565b600060208284031215614e2a57600080fd5b813561ffff81168114614d5c57600080fd5b600080600080600060a08688031215614e5457600080fd5b614e5d86614c80565b9450614e6b60208701614c80565b94979496505050506040830135926060810135926080909101359150565b6001600160a01b0391909116815260200190565b600060208284031215614eaf57600080fd5b614d5c82614c80565b634e487b7160e01b600052604160045260246000fd5b604051608081016001600160401b0381118282101715614ef057614ef0614eb8565b60405290565b604051606081016001600160401b0381118282101715614ef057614ef0614eb8565b604051601f8201601f191681016001600160401b0381118282101715614f4057614f40614eb8565b604052919050565b60006001600160401b03821115614f6157614f61614eb8565b5060051b60200190565b600082601f830112614f7c57600080fd5b81356001600160401b03811115614f9557614f95614eb8565b614fa8601f8201601f1916602001614f18565b818152846020838601011115614fbd57600080fd5b816020850160208301376000918101602001919091529392505050565b60006020808385031215614fed57600080fd5b82356001600160401b038082111561500457600080fd5b818501915085601f83011261501857600080fd5b813561502b61502682614f48565b614f18565b81815260059190911b8301840190848101908883111561504a57600080fd5b8585015b838110156150e3578035858111156150665760008081fd5b86016080818c03601f190181131561507e5760008081fd5b615086614ece565b89830135888111156150985760008081fd5b6150a68e8c83870101614f6b565b8252506040808401358b83015260606150c0818601614c80565b828401526150cf848601614c80565b90830152508552505091860191860161504e565b5098975050505050505050565b6001600160a01b0381168114611eda57600080fd5b60006020828403121561511757600080fd5b8135614d5c816150f0565b600080600080600060a0868803121561513a57600080fd5b8535945060208601356001600160401b0381111561515757600080fd5b61516388828901614f6b565b9450506040860135925061517960608701614c80565b91506080860135615189816150f0565b809150509295509295909350565b600080600080600080600080888a036101c08112156151b557600080fd5b89356151c0816150f0565b985060208a01356151d0816150f0565b975060408a01356151e0816150f0565b965060608a01356151f0816150f0565b955060e0607f198201121561520457600080fd5b5060808901935061016089013592506101808901356001600160401b038082111561522e57600080fd5b61523a8c838d01614f6b565b93506101a08b013591508082111561525157600080fd5b5061525e8b828c01614f6b565b9150509295985092959890939650565b60008060008060008060008060006101c08a8c03121561528d57600080fd5b6152968a614c80565b98506152a460208b01614c80565b97506152b260408b01614c80565b96506152c060608b01614c80565b955060808a0135945060a08a013593506152dd8b60c08c01614d63565b92506152ed8b6101008c01614d7a565b91506152fd8b6101808c01614d63565b90509295985092959850929598565b60006020828403121561531e57600080fd5b5035919050565b8015158114611eda57600080fd5b60006020828403121561534557600080fd5b8135614d5c81615325565b60006020828403121561536257600080fd5b81356001600160401b0381111561537857600080fd5b614aff84828501614f6b565b6000602080838503121561539757600080fd5b82356001600160401b03808211156153ae57600080fd5b818501915085601f8301126153c257600080fd5b81356153d061502682614f48565b81815260059190911b830184019084810190888311156153ef57600080fd5b8585015b838110156150e35780358581111561540b5760008081fd5b86016060818c03601f19018113156154235760008081fd5b61542b614ef6565b898301358881111561543d5760008081fd5b61544b8e8c83870101614f6b565b8252506040808401358b830152615463838501614c80565b90820152855250509186019186016153f3565b6000806000806080858703121561548c57600080fd5b61549585614c80565b9350602085013592506154aa60408601614c80565b91506154b860608601614c80565b905092959194509250565b600080604083850312156154d657600080fd5b82356001600160401b038111156154ec57600080fd5b6154f885828601614f6b565b95602094909401359450505050565b6000806040838503121561551a57600080fd5b8235915061552a60208401614c80565b90509250929050565b60208082526058908201527f506f6c79676f6e5a6b45564d3a3a766572696679426174636865733a2070656e60408201527f64696e6753746174654e756d206d757374206265206c657373206f7220657175606082015277616c207468616e206c61737450656e64696e67537461746560401b608082015260a00190565b6020808252604c90820152600080516020615dc883398151915260408201527f744e756d4261746368206d757374206d61746368207468652070656e64696e6760608201526b040e6e8c2e8ca40c4c2e8c6d60a31b608082015260a00190565b6020808252604390820152600080516020615dc883398151915260408201527f744e756d426174636820737461746520726f6f7420646f6573206e6f742065786060820152621a5cdd60ea1b608082015260a00190565b6020808252605d90820152600080516020615dc883398151915260408201527f744e756d4261746368206d757374206265206c657373206f7220657175616c2060608201527f7468616e2063757272656e744c61737456657269666965644261746368000000608082015260a00190565b60208082526057908201527f506f6c79676f6e5a6b45564d3a3a766572696679426174636865733a2066696e60408201527f616c4e65774261746368206d75737420626520626967676572207468616e20636060820152760eae4e4cadce898c2e6e8accae4d2ccd2cac884c2e8c6d604b1b608082015260a00190565b60008251615768818460208701614cf1565b9190910192915050565b60006020828403121561578457600080fd5b5051919050565b634e487b7160e01b600052601260045260246000fd5b6000826157b0576157b061578b565b500690565b600181811c908216806157c957607f821691505b6020821081036157e957634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526023908201527f506f6c79676f6e5a6b45564d3a3a6f6e6c7941646d696e3a204f6e6c7920616460408201526236b4b760e91b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b60006001600160401b0380831681851680830382111561586a5761586a615832565b01949350505050565b60208082526042908201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960408201527f53746174653a206f6e6c79206966206e6f7420656d657267656e637920737461606082015261746560f01b608082015260a00190565b634e487b7160e01b600052603260045260246000fd5b60006001600160401b0380831681810361590d5761590d615832565b6001019392505050565b928352602083019190915260c01b6001600160c01b031916604082015260480190565b9485526020850193909352604084019190915260c01b6001600160c01b0319166060808401919091521b6001600160601b0319166068820152607c0190565b60006001820161598b5761598b615832565b5060010190565b60006001600160401b03838116908316818110156159b2576159b2615832565b039392505050565b6000828210156159cc576159cc615832565b500390565b60008160001904831182151516156159eb576159eb615832565b500290565b601f821115614a6057600081815260208120601f850160051c81016020861015615a175750805b601f850160051c820191505b81811015613f9f57828155600101615a23565b81516001600160401b03811115615a4f57615a4f614eb8565b615a6381615a5d84546157b5565b846159f0565b602080601f831160018114615a985760008415615a805750858301515b600019600386901b1c1916600185901b178555613f9f565b600085815260208120601f198616915b82811015615ac757888601518255948401946001909101908401615aa8565b5085821015615ae55787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600082615b0457615b0461578b565b500490565b60208082526043908201527f506f6c79676f6e5a6b45564d3a3a6973466f7263654261746368416c6c6f776560408201527f643a204f6e6c7920696620666f72636520626174636820697320617661696c61606082015262626c6560e81b608082015260a00190565b60008219821115615b8557615b85615832565b500190565b6020808252603c908201527f506f6c79676f6e5a6b45564d3a3a6f6e6c79547275737465644167677265676160408201527f746f723a204f6e6c7920747275737465642061676772656761746f7200000000606082015260800190565b8381526001600160a01b0383166020820152606060408201819052600090615c1190830184614d1d565b95945050505050565b60006001600160401b0380841680615c3457615c3461578b565b92169190910492915050565b61012081016040808784376000838201818152879190815b6002811015615c7857848483379084018281529284019290600101615c58565b5050828760c0870137610100850181815286935091505b6001811015615cae578251825260209283019290910190600101615c8f565b50505095945050505050565b600060208284031215615ccc57600080fd5b8151614d5c81615325565b600181815b80851115615d12578160001904821115615cf857615cf8615832565b80851615615d0557918102915b93841c9390800290615cdc565b509250929050565b600082615d2957506001614d74565b81615d3657506000614d74565b8160018114615d4c5760028114615d5657615d72565b6001915050614d74565b60ff841115615d6757615d67615832565b50506001821b614d74565b5060208310610133831016604e8410600b8410161715615d95575081810a614d74565b615d9f8383615cd7565b8060001904821115615db357615db3615832565b029392505050565b6000614d5c8383615d1a56fe506f6c79676f6e5a6b45564d3a3a766572696679426174636865733a20696e69506f6c79676f6e5a6b45564d3a3a6163746976617465456d657267656e637953506f6c79676f6e5a6b45564d3a3a5f766572696679426174636865733a20696e506f6c79676f6e5a6b45564d3a3a5f70726f766544697374696e637450656e64506f6c79676f6e5a6b45564d3a3a73657175656e6365466f726365426174636830644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001506f6c79676f6e5a6b45564d3a3a73657175656e6365426174636865733a2046a26469706673582212204263a1976e5f7199ca31643323da59af5b19b83ea60d3020966f4237eee2909764736f6c634300080f0033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106103925760003560e01c806396dc3d39116101e0578063cfa8ed4711610110578063e7a7ed02116100a8578063e7a7ed0214610905578063e8bf92ed1461091f578063eaeb077b14610932578063edc4112114610945578063f14916d614610958578063f2fde38b1461096b578063f851a4401461097e578063f8b823e414610991578063fe16564f1461099a57600080fd5b8063cfa8ed4714610860578063d02103ca1461087a578063d8d1091b1461088d578063d8f54db0146108a0578063d939b315146108b4578063dbc16976146108ce578063e0d17441146108d6578063e11f3f18146108e9578063e217cfd6146108fc57600080fd5b8063ab9fc5ef11610183578063ab9fc5ef14610759578063adc879e914610763578063afd23cbe1461077d578063b4d63f58146107a5578063b6b0b09714610805578063c0cad3021461081f578063c0ed84e014610832578063c89e42df1461083a578063cf1363061461084d57600080fd5b806396dc3d39146106dd57806399f5634e146106f05780639b796760146106f85780639c9f3dfe1461070b5780639eb831b91461071e5780639f0d039d14610726578063a3c573eb1461072e578063aa58bad61461074157600080fd5b80634a910e6a116102c6578063715018a61161025e578063715018a6146105e65780637215541a146105ee57806375c508b3146106015780637fcb365314610614578063837a473814610627578063841b24d7146106955780638b48931e146106af5780638c4a0af7146106b95780638da5cb5b146106cc57600080fd5b80634a910e6a1461052c5780635392c5e01461053f578063542028d51461055f5780635437988d14610567578063574f649e1461057a57806360943d6a1461058d5780636b8616ce146105a05780636ff512cc146105c0578063704b6c02146105d357600080fd5b80632d0889d3116103395780632d0889d314610475578063383b3be81461047f578063394218e9146104925780633c158267146104a5578063423fa856146104b857806345605267146104d2578063458c0477146104ec5780634834a343146104ff5780634a1a89a71461051257600080fd5b80630eaa86ea14610397578063107bf28c146103bd57806310a01a72146103d257806315064c96146103e75780631816b7e51461040457806319d8ac6114610417578063220d7899146104425780632987898314610455575b600080fd5b6103aa6103a5366004614c9c565b6109ad565b6040519081526020015b60405180910390f35b6103c5610b7c565b6040516103b49190614d49565b6103e56103e0366004614d8b565b610c0a565b005b6065546103f49060ff1681565b60405190151581526020016103b4565b6103e5610412366004614e18565b610e53565b60685461042a906001600160401b031681565b6040516001600160401b0390911681526020016103b4565b6103c5610450366004614e3c565b610f74565b606a54610468906001600160a01b031681565b6040516103b49190614e89565b6103aa620493e081565b6103f461048d366004614e9d565b611115565b6103e56104a0366004614e9d565b61115c565b6103e56104b3366004614fda565b611318565b60685461042a90600160401b90046001600160401b031681565b60685461042a90600160801b90046001600160401b031681565b60725461042a906001600160401b031681565b6103e561050d366004614d8b565b611adf565b60725461042a90600160401b90046001600160401b031681565b6103e561053a366004614e9d565b611e27565b6103aa61054d366004614e9d565b606d6020526000908152604090205481565b6103c5611edd565b6103e5610575366004615105565b611eea565b6103aa610588366004615122565b611f14565b6103e561059b366004615197565b611f57565b6103aa6105ae366004614e9d565b60666020526000908152604090205481565b6103e56105ce366004615105565b6122b2565b6103e56105e1366004615105565b612330565b6103e56123a5565b6103e56105fc366004614e9d565b6123b9565b6103e561060f36600461526e565b6125c0565b60695461042a906001600160401b031681565b61066a61063536600461530c565b6071602052600090815260409020805460018201546002909201546001600160401b0380831693600160401b90930416919084565b604080516001600160401b0395861681529490931660208501529183015260608201526080016103b4565b60725461042a90600160c01b90046001600160401b031681565b61042a62093a8081565b6103e56106c7366004615333565b61264f565b6033546001600160a01b0316610468565b6103e56106eb366004614e9d565b6126c6565b6103aa6126f0565b6103e5610706366004614e9d565b6127d8565b6103e5610719366004614e9d565b61280d565b6103aa600c81565b6074546103aa565b607054610468906001600160a01b031681565b60655461042a9061010090046001600160401b031681565b61042a6206978081565b606c5461042a90600160a81b90046001600160401b031681565b60655461079290600160481b900461ffff1681565b60405161ffff90911681526020016103b4565b6107e06107b3366004614e9d565b606760205260009081526040902080546001909101546001600160401b0380821691600160401b90041683565b604080519384526001600160401b0392831660208501529116908201526060016103b4565b60655461046890600160581b90046001600160a01b031681565b6103e561082d366004615350565b6129bb565b61042a6129d3565b6103e5610848366004615350565b612a20565b6103e561085b366004614e9d565b612a86565b60695461046890600160401b90046001600160a01b031681565b606c54610468906001600160a01b031681565b6103e561089b366004615384565b612b07565b606c546103f490600160a01b900460ff1681565b60725461042a90600160801b90046001600160401b031681565b6103e5612fc6565b6103e56108e4366004615476565b613060565b6103e56108f736600461526e565b6130d2565b61042a6103e881565b60685461042a90600160c01b90046001600160401b031681565b606b54610468906001600160a01b031681565b6103e56109403660046154c3565b613216565b6103e5610953366004614d8b565b61353f565b6103e5610966366004615105565b61365e565b6103e5610979366004615105565b6136d3565b607354610468906001600160a01b031681565b6103aa60745481565b6103e56109a8366004615507565b613749565b60008060006109ba6129d3565b90506001600160401b03881615610a57576072546001600160401b039081169089161115610a035760405162461bcd60e51b81526004016109fa90615533565b60405180910390fd5b6001600160401b038089166000908152607160205260409020600281015481549094509091898116600160401b9092041614610a515760405162461bcd60e51b81526004016109fa906155b1565b50610ac1565b6001600160401b0387166000908152606d6020526040902054915081610a8f5760405162461bcd60e51b81526004016109fa90615611565b806001600160401b0316876001600160401b03161115610ac15760405162461bcd60e51b81526004016109fa90615668565b806001600160401b0316866001600160401b031611610af25760405162461bcd60e51b81526004016109fa906156d9565b6000610b018888888689610f74565b90506000600080516020615e68833981519152600283604051610b249190615756565b602060405180830381855afa158015610b41573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190610b649190615772565b610b6e91906157a1565b9a9950505050505050505050565b606f8054610b89906157b5565b80601f0160208091040260200160405190810160405280929190818152602001828054610bb5906157b5565b8015610c025780601f10610bd757610100808354040283529160200191610c02565b820191906000526020600020905b815481529060010190602001808311610be557829003601f168201915b505050505081565b610c1261376b565b600080610c1d6129d3565b90506001600160401b038a1615610cb1576072546001600160401b03908116908b161115610c5d5760405162461bcd60e51b81526004016109fa90615533565b6001600160401b03808b1660009081526071602052604090206002810154815490945090918b8116600160401b9092041614610cab5760405162461bcd60e51b81526004016109fa906155b1565b50610d1b565b6001600160401b0389166000908152606d6020526040902054915081610ce95760405162461bcd60e51b81526004016109fa90615611565b806001600160401b0316896001600160401b03161115610d1b5760405162461bcd60e51b81526004016109fa90615668565b806001600160401b0316886001600160401b031611610d4c5760405162461bcd60e51b81526004016109fa906156d9565b6000610d5b8a8a8a868b610f74565b606980546001600160401b0319166001600160401b038c81169182179092556000908152606d602052604090208990556072549192501615610da857607280546001600160801b03191690555b606c546040516333d6247d60e01b8152600481018a90526001600160a01b03909116906333d6247d90602401600060405180830381600087803b158015610dee57600080fd5b505af1158015610e02573d6000803e3d6000fd5b50506040518981523392506001600160401b038c1691507f0c0ce073a7d7b5850c04ccc4b20ee7d3179d5f57d0ac44399565792c0f72fce79060200160405180910390a35050505050505050505050565b6073546001600160a01b03163314610e7d5760405162461bcd60e51b81526004016109fa906157ef565b6103e88161ffff1610158015610e9857506104008161ffff16105b610f1d5760405162461bcd60e51b815260206004820152604a60248201527f506f6c79676f6e5a6b45564d3a3a7365744d756c7469706c696572426174636860448201527f4665653a206e65774d756c7469706c696572426174636846656520696e636f72606482015269726563742072616e676560b01b608482015260a4016109fa565b6065805461ffff60481b1916600160481b61ffff8416908102919091179091556040519081527f7019933d795eba185c180209e8ae8bffbaa25bcef293364687702c31f4d302c5906020015b60405180910390a150565b6001600160401b03808616600081815260676020526040808220549388168252902054606092911580610fa657508115155b61101a576040805162461bcd60e51b81526020600482015260248101919091527f506f6c79676f6e5a6b45564d3a3a676574496e707574536e61726b427974657360448201527f3a206f6c64416363496e7075744861736820646f6573206e6f7420657869737460648201526084016109fa565b8061108f576040805162461bcd60e51b81526020600482015260248101919091527f506f6c79676f6e5a6b45564d3a3a676574496e707574536e61726b427974657360448201527f3a206e6577416363496e7075744861736820646f6573206e6f7420657869737460648201526084016109fa565b606c54604080516001600160601b03193360601b166020820152603481019790975260548701939093526001600160c01b031960c0998a1b81166074880152600160a81b909104891b8116607c870152608486019490945260a485015260c4840194909452509290931b90911660e4830152805180830360cc01815260ec909201905290565b6072546001600160401b038281166000908152607160205260408120549092429261114b92600160801b90920481169116615848565b6001600160401b0316111592915050565b6073546001600160a01b031633146111865760405162461bcd60e51b81526004016109fa906157ef565b62093a806001600160401b038216111561121f5760405162461bcd60e51b815260206004820152604e60248201527f506f6c79676f6e5a6b45564d3a3a73657454727573746564416767726567617460448201527f6f7254696d656f75743a20457863656564206d61782068616c7420616767726560648201526d19d85d1a5bdb881d1a5b595bdd5d60921b608482015260a4016109fa565b60655460ff166112c2576072546001600160401b03600160c01b9091048116908216106112c25760405162461bcd60e51b8152602060048201526044602482018190527f506f6c79676f6e5a6b45564d3a3a736574547275737465644167677265676174908201527f6f7254696d656f75743a204e65772074696d656f7574206d757374206265206c60648201526337bbb2b960e11b608482015260a4016109fa565b607280546001600160c01b0316600160c01b6001600160401b038416908102919091179091556040519081527f1f4fa24c2e4bad19a7f3ec5c5485f70d46c798461c2e684f55bbd0fc661373a190602001610f69565b60655460ff161561133b5760405162461bcd60e51b81526004016109fa90615873565b606954600160401b90046001600160a01b031633146113c25760405162461bcd60e51b815260206004820152603a60248201527f506f6c79676f6e5a6b45564d3a3a6f6e6c795472757374656453657175656e6360448201527f65723a204f6e6c7920747275737465642073657175656e63657200000000000060648201526084016109fa565b8051806114375760405162461bcd60e51b815260206004820152603d60248201527f506f6c79676f6e5a6b45564d3a3a73657175656e6365426174636865733a204160448201527f74206c65617374206d7573742073657175656e6365203120626174636800000060648201526084016109fa565b6103e881106114b0576040805162461bcd60e51b81526020600482015260248101919091527f506f6c79676f6e5a6b45564d3a3a73657175656e6365426174636865733a204360448201527f616e6e6f742073657175656e63652074686174206d616e79206261746368657360648201526084016109fa565b6068546001600160401b03600160401b82048116600081815260676020526040812054838516949293600160801b90930490921691905b85811015611915576000878281518110611503576115036158db565b60200260200101519050600081606001516001600160401b03161115611693578361152d816158f1565b94505060008160000151805190602001208260200151836060015160405160200161155a93929190615917565b60408051601f1981840301815291815281516020928301206001600160401b0388166000908152606690935291205490915081146115ee5760405162461bcd60e51b815260206004820152603d6024820152600080516020615e8883398151915260448201527f6f7263656420626174636865732064617461206d757374206d6174636800000060648201526084016109fa565b81606001516001600160401b031682604001516001600160401b0316101561168d5760405162461bcd60e51b81526020600482015260586024820152600080516020615e8883398151915260448201527f6f7263656420626174636865732074696d657374616d70206d757374206265206064820152773134b3b3b2b91037b91032b8bab0b6103a3430b71036b4b760411b608482015260a4016109fa565b50611808565b6020810151158061171c5750606c5460208201516040516312bd9b1960e11b81526001600160a01b039092169163257b3632916116d69160040190815260200190565b6020604051808303816000875af11580156116f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117199190615772565b15155b61178e5760405162461bcd60e51b815260206004820152603a60248201527f506f6c79676f6e5a6b45564d3a3a73657175656e6365426174636865733a204760448201527f6c6f62616c206578697420726f6f74206d75737420657869737400000000000060648201526084016109fa565b805151620493e0116118085760405162461bcd60e51b815260206004820152603a60248201527f506f6c79676f6e5a6b45564d3a3a73657175656e6365426174636865733a205460448201527f72616e73616374696f6e73206279746573206f766572666c6f7700000000000060648201526084016109fa565b856001600160401b031681604001516001600160401b03161015801561183b57504281604001516001600160401b031611155b6118ad5760405162461bcd60e51b815260206004820152603d60248201527f506f6c79676f6e5a6b45564d3a3a73657175656e6365426174636865733a205460448201527f696d657374616d70206d75737420626520696e736964652072616e676500000060648201526084016109fa565b805180516020918201208183015160408085015190516118d494889493929133910161593a565b60405160208183030381529060405280519060200120925084806118f7906158f1565b9550508060400151955050808061190d90615979565b9150506114e7565b506068546001600160401b03600160c01b909104811690831611156119885760405162461bcd60e51b81526020600482015260356024820152600080516020615e888339815191526044820152746f7263652062617463686573206f766572666c6f7760581b60648201526084016109fa565b6068546000906119a890600160801b90046001600160401b031684615992565b6119bb906001600160401b0316876159ba565b60408051606081018252848152426001600160401b03908116602080840191825260688054600160401b9081900485168688019081528c861660008181526067909552979093209551865592516001909501805492519585166001600160801b03199384161795851684029590951790945583548b841691161793029290921767ffffffffffffffff60801b1916600160801b92871692909202919091179055607454909150611a9090339030908490611a7591906159d1565b606554600160581b90046001600160a01b03169291906137c5565b611a98613830565b606854604051600160401b9091046001600160401b0316907f303446e6a8cb73c83dff421c0b1d5e5ce0719dab1bff13660fc254e58cc17fce90600090a250505050505050565b60655460ff1615611b025760405162461bcd60e51b81526004016109fa90615873565b6072546001600160401b038781166000908152606760205260409020600101544292611b3992600160c01b90910481169116615848565b6001600160401b03161115611bc25760405162461bcd60e51b815260206004820152604360248201527f506f6c79676f6e5a6b45564d3a3a766572696679426174636865733a2054727560448201527f737465642061676772656761746f722074696d656f7574206e6f7420657870696064820152621c995960ea1b608482015260a4016109fa565b6103e8611bcf8888615992565b6001600160401b031610611c4b5760405162461bcd60e51b815260206004820152603c60248201527f506f6c79676f6e5a6b45564d3a3a766572696679426174636865733a2043616e60448201527f6e6f74207665726966792074686174206d616e7920626174636865730000000060648201526084016109fa565b611c5b88888888888888886138d0565b611c6486613dc1565b607254600160801b90046001600160401b0316600003611d2b57606980546001600160401b0319166001600160401b038881169182179092556000908152606d602052604090208590556072541615611cc857607280546001600160801b03191690555b606c546040516333d6247d60e01b8152600481018790526001600160a01b03909116906333d6247d90602401600060405180830381600087803b158015611d0e57600080fd5b505af1158015611d22573d6000803e3d6000fd5b50505050611ddc565b611d33613830565b607280546001600160401b0316906000611d4c836158f1565b82546001600160401b039182166101009390930a92830292820219169190911790915560408051608081018252428316815289831660208083019182528284018b8152606084018b8152607254871660009081526071909352949091209251835492518616600160401b026001600160801b03199093169516949094171781559151600183015551600290910155505b60405184815233906001600160401b038816907f9c72852172521097ba7e1482e6b44b351323df0155f97f4ea18fcec28e1f5966906020015b60405180910390a35050505050505050565b606a546001600160a01b03163314611ed157611e4281611115565b611ed15760405162461bcd60e51b815260206004820152605460248201527f506f6c79676f6e5a6b45564d3a3a636f6e736f6c696461746550656e64696e6760448201527f53746174653a2050656e64696e67207374617465206973206e6f7420726561646064820152731e481d1bc818994818dbdb9cdbdb1a59185d195960621b608482015260a4016109fa565b611eda81613fa7565b50565b606e8054610b89906157b5565b611ef261376b565b606b80546001600160a01b0319166001600160a01b0392909216919091179055565b6000858580519060200120858585604051602001611f3695949392919061593a565b60405160208183030381529060405280519060200120905095945050505050565b600054610100900460ff1615808015611f775750600054600160ff909116105b80611f915750303b158015611f91575060005460ff166001145b611ff45760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016109fa565b6000805460ff191660011790558015612017576000805461ff0019166101001790555b606c80546001600160a01b03199081166001600160a01b038c81169190911790925560658054600160581b600160f81b031916600160581b8c851602179055606b805482168a84161790556070805490911691881691909117905561207f6020860186615105565b607380546001600160a01b0319166001600160a01b03929092169190911790556120af6060860160408701615105565b606980546001600160a01b0392909216600160401b02600160401b600160e01b03199092169190911790556120ea60c0860160a08701615105565b606a80546001600160a01b0319166001600160a01b039290921691909117905560008052606d6020527fda90043ba5b4096ba14704bc227ab0d3167da15b887e62ab2e76e37daa71135684905561214760e0860160c08701614e9d565b607280546001600160401b0392909216600160c01b026001600160c01b0390921691909117905561217e6040860160208701614e9d565b606c80546001600160401b0392909216600160a81b0267ffffffffffffffff60a81b199092169190911790556121ba6080860160608701614e9d565b607280546001600160401b0392909216600160801b0267ffffffffffffffff60801b199092169190911790556121f660a0860160808701615333565b606c8054911515600160a01b0260ff60a01b19909216919091179055606e61221e8482615a36565b50606f61222b8382615a36565b50670de0b6b3a7640000607455606580546affffffffffffffffffff0019166a03ea00000000000007080017905561226161418b565b80156122a7576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050565b6073546001600160a01b031633146122dc5760405162461bcd60e51b81526004016109fa906157ef565b60698054600160401b600160e01b031916600160401b6001600160a01b038416021790556040517ff54144f9611984021529f814a1cb6a41e22c58351510a0d9f7e822618abb9cc090610f69908390614e89565b6073546001600160a01b0316331461235a5760405162461bcd60e51b81526004016109fa906157ef565b607380546001600160a01b0319166001600160a01b0383161790556040517f5a272403b402d892977df56625f4164ccaf70ca3863991c43ecfe76a6905b0a190610f69908390614e89565b6123ad61376b565b6123b760006141fb565b565b6033546001600160a01b031633146125b85760006123d56129d3565b9050806001600160401b0316826001600160401b03161161244c5760405162461bcd60e51b815260206004820152603c6024820152600080516020615de883398151915260448201527f746174653a20426174636820616c72656164792076657269666965640000000060648201526084016109fa565b6068546001600160401b03600160401b90910481169083161180159061248e57506001600160401b038083166000908152606760205260409020600101541615155b6125075760405162461bcd60e51b81526020600482015260506024820152600080516020615de883398151915260448201527f746174653a204261746368206e6f742073657175656e636564206f72206e6f7460648201526f20656e64206f662073657175656e636560801b608482015260a4016109fa565b6001600160401b0380831660009081526067602052604090206001015442916125359162093a809116615848565b6001600160401b031611156125b65760405162461bcd60e51b815260206004820152604d6024820152600080516020615de883398151915260448201527f746174653a204167677265676174696f6e2068616c742074696d656f7574206960648201526c1cc81b9bdd08195e1c1a5c9959609a1b608482015260a4016109fa565b505b611eda61424d565b60655460ff16156125e35760405162461bcd60e51b81526004016109fa90615873565b6125f48989898989898989896142bd565b6001600160401b0386166000908152606d60209081526040918290205482519081529081018690527f1f44c21118c4603cfb4e1b621dbcfa2b73efcececee2b99b620b2953d33a7010910160405180910390a16122a761424d565b6073546001600160a01b031633146126795760405162461bcd60e51b81526004016109fa906157ef565b606c8054821515600160a01b0260ff60a01b199091161790556040517fbacda50a4a8575be1d91a7ebe29ee45056f3a94f12a2281eb6b43afa33bcefe690610f6990831515815260200190565b6126ce61376b565b606980546001600160401b0319166001600160401b0392909216919091179055565b6065546040516370a0823160e01b81526000918291600160581b9091046001600160a01b0316906370a082319061272b903090600401614e89565b602060405180830381865afa158015612748573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061276c9190615772565b905060006127786129d3565b6068546001600160401b03600160401b82048116916127a891600160801b8204811691600160c01b900416615992565b6127b29190615848565b6127bc9190615992565b6001600160401b031690506127d18183615af5565b9250505090565b6127e061376b565b606880546001600160401b03909216600160401b0267ffffffffffffffff60401b19909216919091179055565b6073546001600160a01b031633146128375760405162461bcd60e51b81526004016109fa906157ef565b62093a806001600160401b03821611156128cb5760405162461bcd60e51b815260206004820152604960248201527f506f6c79676f6e5a6b45564d3a3a73657450656e64696e67537461746554696d60448201527f656f75743a20457863656564206d61782068616c74206167677265676174696f6064820152681b881d1a5b595bdd5d60ba1b608482015260a4016109fa565b60655460ff16612960576072546001600160401b03600160801b9091048116908216106129605760405162461bcd60e51b815260206004820152603f60248201527f506f6c79676f6e5a6b45564d3a3a73657450656e64696e67537461746554696d60448201527f656f75743a204e65772074696d656f7574206d757374206265206c6f7765720060648201526084016109fa565b6072805467ffffffffffffffff60801b1916600160801b6001600160401b038416908102919091179091556040519081527fc4121f4e22c69632ebb7cf1f462be0511dc034f999b52013eddfb24aab765c7590602001610f69565b6129c361376b565b606f6129cf8282615a36565b5050565b6072546000906001600160401b031615612a1057506072546001600160401b03908116600090815260716020526040902054600160401b90041690565b506069546001600160401b031690565b6073546001600160a01b03163314612a4a5760405162461bcd60e51b81526004016109fa906157ef565b606e612a568282615a36565b507f6b8f723a4c7a5335cafae8a598a0aa0301be1387c037dccc085b62add6448b2081604051610f699190614d49565b6073546001600160a01b03163314612ab05760405162461bcd60e51b81526004016109fa906157ef565b6065805468ffffffffffffffff0019166101006001600160401b038416908102919091179091556040519081527f03a12f7e53d2a9e31a9e913d85c12c4c38feb92abe003c111329298af088437f90602001610f69565b60655460ff1615612b2a5760405162461bcd60e51b81526004016109fa90615873565b606c54600160a01b900460ff161515600114612b585760405162461bcd60e51b81526004016109fa90615b09565b805180612bbb5760405162461bcd60e51b815260206004820152603f6024820152600080516020615e4883398151915260448201527f65733a204d75737420666f726365206174206c6561737420312062617463680060648201526084016109fa565b6103e88110612c2c5760405162461bcd60e51b81526020600482015260436024820152600080516020615e4883398151915260448201527f65733a2043616e6e6f74207665726966792074686174206d616e79206261746360648201526268657360e81b608482015260a4016109fa565b6068546001600160401b03600160c01b8204811691612c54918491600160801b900416615b72565b1115612cb05760405162461bcd60e51b81526020600482015260376024820152600080516020615e48833981519152604482015276195cce88119bdc98d94818985d18da081a5b9d985b1a59604a1b60648201526084016109fa565b6068546001600160401b03600160401b820481166000818152606760205260408120549193600160801b9004909216915b84811015612ede576000868281518110612cfd57612cfd6158db565b602002602001015190508380612d12906158f1565b945050600081600001518051906020012082602001518360400151604051602001612d3f93929190615917565b60408051601f1981840301815291815281516020928301206001600160401b038816600090815260669093529120549091508114612dde5760405162461bcd60e51b81526020600482015260426024820152600080516020615e4883398151915260448201527f65733a20466f7263656420626174636865732064617461206d757374206d61746064820152610c6d60f31b608482015260a4016109fa565b612de96001886159ba565b8303612e805742620697808360400151612e039190615848565b6001600160401b03161115612e805760405162461bcd60e51b81526020600482015260496024820152600080516020615e4883398151915260448201527f65733a20466f72636564206261746368206973206e6f7420696e2074696d656f6064820152681d5d081c195c9a5bd960ba1b608482015260a4016109fa565b8151805160209182012081840151604051612ea39388939291429133910161593a565b6040516020818303038152906040528051906020012093508580612ec6906158f1565b96505050508080612ed690615979565b915050612ce1565b50606880546001600160401b031916426001600160401b03908116918217808455604080516060810182528681526020808201958652600160401b9384900485168284019081528a861660008181526067909352848320935184559651600193909301805491519387166001600160801b0319909216919091179286168502929092179091558554600160401b600160c01b03191694830267ffffffffffffffff60801b191694909417600160801b88851602179485905551930416917f648a61dd2438f072f5a1960939abd30f37aea80d2e94c9792ad142d3e0a490a49190a25050505050565b6073546001600160a01b03163314612ff05760405162461bcd60e51b81526004016109fa906157ef565b607060009054906101000a90046001600160a01b03166001600160a01b031663dbc169766040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561304057600080fd5b505af1158015613054573d6000803e3d6000fd5b505050506123b76148e1565b61306861376b565b604080516060810182529384526001600160401b03928316602080860191825292841685830190815295841660009081526067909352912092518355516001909201805493518216600160401b026001600160801b03199094169290911691909117919091179055565b606a546001600160a01b031633146130fc5760405162461bcd60e51b81526004016109fa90615b8a565b61310d8989898989898989896142bd565b606980546001600160401b0319166001600160401b038881169182179092556000908152606d60205260409020859055607254161561315757607280546001600160801b03191690555b606c546040516333d6247d60e01b8152600481018790526001600160a01b03909116906333d6247d90602401600060405180830381600087803b15801561319d57600080fd5b505af11580156131b1573d6000803e3d6000fd5b5050607280546001600160c01b031661127560c71b179055505060405184815233906001600160401b038816907fcc1b5520188bf1dd3e63f98164b577c4d75c11a619ddea692112f0d1aec4cf729060200160405180910390a3505050505050505050565b60655460ff16156132395760405162461bcd60e51b81526004016109fa90615873565b606c54600160a01b900460ff1615156001146132675760405162461bcd60e51b81526004016109fa90615b09565b600061327260745490565b9050818111156132d75760405162461bcd60e51b815260206004820152602a60248201527f506f6c79676f6e5a6b45564d3a3a666f72636542617463683a204e6f7420656e6044820152696f756768206d6174696360b01b60648201526084016109fa565b620493e08351106133485760405162461bcd60e51b815260206004820152603560248201527f506f6c79676f6e5a6b45564d3a3a666f72636542617463683a205472616e73616044820152746374696f6e73206279746573206f766572666c6f7760581b60648201526084016109fa565b60655461336790600160581b90046001600160a01b03163330846137c5565b606c5460408051633ed691ef60e01b815290516000926001600160a01b031691633ed691ef9160048083019260209291908290030181865afa1580156133b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133d59190615772565b60688054919250600160c01b9091046001600160401b03169060186133f9836158f1565b91906101000a8154816001600160401b0302191690836001600160401b03160217905550508380519060200120814260405160200161343a93929190615917565b60408051808303601f190181529181528151602092830120606854600160c01b90046001600160401b0316600090815260669093529120553233036134de57606854604080518381523360208201526060918101829052600091810191909152600160c01b9091046001600160401b0316907ff94bb37db835f1ab585ee00041849a09b12cd081d77fa15ca070757619cbc9319060800160405180910390a2613539565b606860189054906101000a90046001600160401b03166001600160401b03167ff94bb37db835f1ab585ee00041849a09b12cd081d77fa15ca070757619cbc93182338760405161353093929190615be7565b60405180910390a25b50505050565b606a546001600160a01b031633146135695760405162461bcd60e51b81526004016109fa90615b8a565b61357988888888888888886138d0565b606980546001600160401b0319166001600160401b038881169182179092556000908152606d6020526040902085905560725416156135c357607280546001600160801b03191690555b606c546040516333d6247d60e01b8152600481018790526001600160a01b03909116906333d6247d90602401600060405180830381600087803b15801561360957600080fd5b505af115801561361d573d6000803e3d6000fd5b50506040518681523392506001600160401b03891691507f0c0ce073a7d7b5850c04ccc4b20ee7d3179d5f57d0ac44399565792c0f72fce790602001611e15565b6073546001600160a01b031633146136885760405162461bcd60e51b81526004016109fa906157ef565b606a80546001600160a01b0319166001600160a01b0383161790556040517f61f8fec29495a3078e9271456f05fb0707fd4e41f7661865f80fc437d06681ca90610f69908390614e89565b6136db61376b565b6001600160a01b0381166137405760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016109fa565b611eda816141fb565b61375161376b565b6001600160401b03166000908152606d6020526040902055565b6033546001600160a01b031633146123b75760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016109fa565b6040516001600160a01b03808516602483015283166044820152606481018290526135399085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915261498e565b6072546001600160401b03600160401b82048116911611156123b75760725460009061386d90600160401b90046001600160401b03166001615848565b905061387881611115565b15611eda5760725460009060029061389a9084906001600160401b0316615992565b6138a49190615c1a565b6138ae9083615848565b90506138b981611115565b156138c7576129cf81613fa7565b6129cf82613fa7565b6000806138db6129d3565b90506001600160401b038a1615613a41576072546001600160401b03908116908b1611156139935760405162461bcd60e51b815260206004820152605960248201527f506f6c79676f6e5a6b45564d3a3a5f766572696679426174636865733a20706560448201527f6e64696e6753746174654e756d206d757374206265206c657373206f7220657160648201527875616c207468616e206c61737450656e64696e67537461746560381b608482015260a4016109fa565b6001600160401b03808b1660009081526071602052604090206002810154815490945090918b8116600160401b9092041614613a3b5760405162461bcd60e51b815260206004820152604d6024820152600080516020615e0883398151915260448201527f69744e756d4261746368206d757374206d61746368207468652070656e64696e60648201526c0ce40e6e8c2e8ca40c4c2e8c6d609b1b608482015260a4016109fa565b50613b67565b6001600160401b0389166000908152606d6020526040902054915081613acb5760405162461bcd60e51b815260206004820152604460248201819052600080516020615e08833981519152908201527f69744e756d426174636820737461746520726f6f7420646f6573206e6f7420656064820152631e1a5cdd60e21b608482015260a4016109fa565b806001600160401b0316896001600160401b03161115613b675760405162461bcd60e51b815260206004820152605e6024820152600080516020615e0883398151915260448201527f69744e756d4261746368206d757374206265206c657373206f7220657175616c60648201527f207468616e2063757272656e744c617374566572696669656442617463680000608482015260a4016109fa565b806001600160401b0316886001600160401b031611613c0f5760405162461bcd60e51b815260206004820152605860248201527f506f6c79676f6e5a6b45564d3a3a5f766572696679426174636865733a20666960448201527f6e616c4e65774261746368206d75737420626520626967676572207468616e206064820152770c6eae4e4cadce898c2e6e8accae4d2ccd2cac884c2e8c6d60431b608482015260a4016109fa565b6000613c1e8a8a8a868b610f74565b90506000600080516020615e68833981519152600283604051613c419190615756565b602060405180830381855afa158015613c5e573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190613c819190615772565b613c8b91906157a1565b606b546040805160208101825283815290516343753b4d60e01b81529293506001600160a01b03909116916343753b4d91613ccf918b918b918b9190600401615c40565b602060405180830381865afa158015613cec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d109190615cba565b613d705760405162461bcd60e51b815260206004820152602b60248201527f506f6c79676f6e5a6b45564d3a3a5f766572696679426174636865733a20496e60448201526a3b30b634b210383937b7b360a91b60648201526084016109fa565b613db333613d7e858d615992565b6001600160401b0316613d8f6126f0565b613d9991906159d1565b606554600160581b90046001600160a01b03169190614a65565b505050505050505050505050565b6000613dcb6129d3565b905081600080613ddb8484615992565b6001600160401b031690505b836001600160401b0316836001600160401b031614613e8d576001600160401b03808416600090815260676020526040902060655460018201549192610100909104811691613e379116426159ba565b1115613e72576001810154613e5c90600160401b90046001600160401b031685615992565b613e6f906001600160401b031684615b72565b92505b60010154600160401b90046001600160401b03169250613de7565b6000613e9983836159ba565b905082811015613f13576000613eaf82856159ba565b9050600c8111613ebf5780613ec2565b600c5b9050613ecf8160036159d1565b613eda90600a615dbb565b606554613ef3908390600160481b900461ffff16615dbb565b607454613f0091906159d1565b613f0a9190615af5565b60745550613f9f565b6000613f1f84836159ba565b9050600c8111613f2f5780613f32565b600c5b90506000613f418260036159d1565b613f4c90600a615dbb565b606554613f65908490600160481b900461ffff16615dbb565b607454613f7291906159d1565b613f7c9190615af5565b905080607454607454613f8f91906159d1565b613f999190615af5565b60745550505b505050505050565b6001600160401b03811615801590613fd457506072546001600160401b03600160401b9091048116908216115b8015613fef57506072546001600160401b0390811690821611155b6140615760405162461bcd60e51b815260206004820152603f60248201527f506f6c79676f6e5a6b45564d3a3a5f636f6e736f6c696461746550656e64696e60448201527f6753746174653a2070656e64696e6753746174654e756d20696e76616c69640060648201526084016109fa565b6001600160401b038181166000818152607160209081526040808320805460698054600160401b928390049098166001600160401b0319909816881790556002820154878652606d90945293829020929092556072805467ffffffffffffffff60401b19169390940292909217909255606c54600183015491516333d6247d60e01b815260048101929092529192916001600160a01b0316906333d6247d90602401600060405180830381600087803b15801561411d57600080fd5b505af1158015614131573d6000803e3d6000fd5b50505050826001600160401b0316816001600160401b03167f328d3c6c0fd6f1be0515e422f2d87e59f25922cbc2233568515a0c4bc3f8510e846002015460405161417e91815260200190565b60405180910390a3505050565b600054610100900460ff166141f65760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016109fa565b6123b7335b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b607060009054906101000a90046001600160a01b03166001600160a01b0316632072f6c56040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561429d57600080fd5b505af11580156142b1573d6000803e3d6000fd5b505050506123b7614a95565b60006001600160401b038a161561442d576072546001600160401b03908116908b1611156143755760405162461bcd60e51b81526020600482015260656024820152600080516020615e2883398151915260448201527f696e6753746174653a2070656e64696e6753746174654e756d206d757374206260648201527f65206c657373206f7220657175616c207468616e206c61737450656e64696e67608482015264537461746560d81b60a482015260c4016109fa565b506001600160401b03808a1660009081526071602052604090206002810154815490928a8116600160401b90920416146144275760405162461bcd60e51b81526020600482015260596024820152600080516020615e2883398151915260448201527f696e6753746174653a20696e69744e756d4261746368206d757374206d6174636064820152780d040e8d0ca40e0cadcc8d2dcce40e6e8c2e8ca40c4c2e8c6d603b1b608482015260a4016109fa565b50614566565b506001600160401b0387166000908152606d6020526040902054806144c15760405162461bcd60e51b81526020600482015260506024820152600080516020615e2883398151915260448201527f696e6753746174653a20696e69744e756d426174636820737461746520726f6f60648201526f1d08191bd95cc81b9bdd08195e1a5cdd60821b608482015260a4016109fa565b6069546001600160401b0390811690891611156145665760405162461bcd60e51b81526020600482015260636024820152600080516020615e2883398151915260448201527f696e6753746174653a20696e69744e756d4261746368206d757374206265206c60648201527f657373206f7220657175616c207468616e206c617374566572696669656442616084820152620e8c6d60eb1b60a482015260c4016109fa565b6072546001600160401b03908116908a16118015906145965750896001600160401b0316896001600160401b0316115b80156145b757506072546001600160401b03600160401b9091048116908a16115b6146285760405162461bcd60e51b81526020600482015260486024820152600080516020615e2883398151915260448201527f696e6753746174653a2066696e616c50656e64696e6753746174654e756d20696064820152671b98dbdc9c9958dd60c21b608482015260a4016109fa565b6001600160401b03898116600090815260716020526040902054600160401b90048116908816146146e15760405162461bcd60e51b81526020600482015260636024820152600080516020615e2883398151915260448201527f696e6753746174653a2066696e616c4e65774261746368206d7573742062652060648201527f657175616c207468616e2063757272656e744c617374566572696669656442616084820152620e8c6d60eb1b60a482015260c4016109fa565b60006146f0898989858a610f74565b90506000600080516020615e688339815191526002836040516147139190615756565b602060405180830381855afa158015614730573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906147539190615772565b61475d91906157a1565b606b546040805160208101825283815290516343753b4d60e01b81529293506001600160a01b03909116916343753b4d916147a1918a918a918a9190600401615c40565b602060405180830381865afa1580156147be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906147e29190615cba565b61483c5760405162461bcd60e51b81526020600482015260376024820152600080516020615e2883398151915260448201527634b733a9ba30ba329d1024b73b30b634b210383937b7b360491b60648201526084016109fa565b6001600160401b038b16600090815260716020526040902060020154879003613db35760405162461bcd60e51b815260206004820152605b6024820152600080516020615e2883398151915260448201527f696e6753746174653a2053746f72656420726f6f74206d75737420626520646960648201527f66666572656e74207468616e206e657720737461746520726f6f740000000000608482015260a4016109fa565b60655460ff166149595760405162461bcd60e51b815260206004820152603b60248201527f456d657267656e63794d616e616765723a3a6966456d657267656e637953746160448201527f74653a206f6e6c7920696620656d657267656e6379207374617465000000000060648201526084016109fa565b6065805460ff191690556040517f1e5e34eea33501aecf2ebec9fe0e884a40804275ea7fe10b2ba084c8374308b390600090a1565b60006149e3826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316614af09092919063ffffffff16565b805190915015614a605780806020019051810190614a019190615cba565b614a605760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016109fa565b505050565b6040516001600160a01b038316602482015260448101829052614a6090849063a9059cbb60e01b906064016137f9565b60655460ff1615614ab85760405162461bcd60e51b81526004016109fa90615873565b6065805460ff191660011790556040517f2261efe5aef6fedc1fd1550b25facc9181745623049c7901287030b9ad1a549790600090a1565b6060614aff8484600085614b07565b949350505050565b606082471015614b685760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016109fa565b600080866001600160a01b03168587604051614b849190615756565b60006040518083038185875af1925050503d8060008114614bc1576040519150601f19603f3d011682016040523d82523d6000602084013e614bc6565b606091505b5091509150614bd787838387614be2565b979650505050505050565b60608315614c51578251600003614c4a576001600160a01b0385163b614c4a5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016109fa565b5081614aff565b614aff8383815115614c665781518083602001fd5b8060405162461bcd60e51b81526004016109fa9190614d49565b80356001600160401b0381168114614c9757600080fd5b919050565b600080600080600060a08688031215614cb457600080fd5b614cbd86614c80565b9450614ccb60208701614c80565b9350614cd960408701614c80565b94979396509394606081013594506080013592915050565b60005b83811015614d0c578181015183820152602001614cf4565b838111156135395750506000910152565b60008151808452614d35816020860160208601614cf1565b601f01601f19169290920160200192915050565b602081526000614d5c6020830184614d1d565b9392505050565b8060408101831015614d7457600080fd5b92915050565b8060808101831015614d7457600080fd5b6000806000806000806000806101a0898b031215614da857600080fd5b614db189614c80565b9750614dbf60208a01614c80565b9650614dcd60408a01614c80565b95506060890135945060808901359350614dea8a60a08b01614d63565b9250614df98a60e08b01614d7a565b9150614e098a6101608b01614d63565b90509295985092959890939650565b600060208284031215614e2a57600080fd5b813561ffff81168114614d5c57600080fd5b600080600080600060a08688031215614e5457600080fd5b614e5d86614c80565b9450614e6b60208701614c80565b94979496505050506040830135926060810135926080909101359150565b6001600160a01b0391909116815260200190565b600060208284031215614eaf57600080fd5b614d5c82614c80565b634e487b7160e01b600052604160045260246000fd5b604051608081016001600160401b0381118282101715614ef057614ef0614eb8565b60405290565b604051606081016001600160401b0381118282101715614ef057614ef0614eb8565b604051601f8201601f191681016001600160401b0381118282101715614f4057614f40614eb8565b604052919050565b60006001600160401b03821115614f6157614f61614eb8565b5060051b60200190565b600082601f830112614f7c57600080fd5b81356001600160401b03811115614f9557614f95614eb8565b614fa8601f8201601f1916602001614f18565b818152846020838601011115614fbd57600080fd5b816020850160208301376000918101602001919091529392505050565b60006020808385031215614fed57600080fd5b82356001600160401b038082111561500457600080fd5b818501915085601f83011261501857600080fd5b813561502b61502682614f48565b614f18565b81815260059190911b8301840190848101908883111561504a57600080fd5b8585015b838110156150e3578035858111156150665760008081fd5b86016080818c03601f190181131561507e5760008081fd5b615086614ece565b89830135888111156150985760008081fd5b6150a68e8c83870101614f6b565b8252506040808401358b83015260606150c0818601614c80565b828401526150cf848601614c80565b90830152508552505091860191860161504e565b5098975050505050505050565b6001600160a01b0381168114611eda57600080fd5b60006020828403121561511757600080fd5b8135614d5c816150f0565b600080600080600060a0868803121561513a57600080fd5b8535945060208601356001600160401b0381111561515757600080fd5b61516388828901614f6b565b9450506040860135925061517960608701614c80565b91506080860135615189816150f0565b809150509295509295909350565b600080600080600080600080888a036101c08112156151b557600080fd5b89356151c0816150f0565b985060208a01356151d0816150f0565b975060408a01356151e0816150f0565b965060608a01356151f0816150f0565b955060e0607f198201121561520457600080fd5b5060808901935061016089013592506101808901356001600160401b038082111561522e57600080fd5b61523a8c838d01614f6b565b93506101a08b013591508082111561525157600080fd5b5061525e8b828c01614f6b565b9150509295985092959890939650565b60008060008060008060008060006101c08a8c03121561528d57600080fd5b6152968a614c80565b98506152a460208b01614c80565b97506152b260408b01614c80565b96506152c060608b01614c80565b955060808a0135945060a08a013593506152dd8b60c08c01614d63565b92506152ed8b6101008c01614d7a565b91506152fd8b6101808c01614d63565b90509295985092959850929598565b60006020828403121561531e57600080fd5b5035919050565b8015158114611eda57600080fd5b60006020828403121561534557600080fd5b8135614d5c81615325565b60006020828403121561536257600080fd5b81356001600160401b0381111561537857600080fd5b614aff84828501614f6b565b6000602080838503121561539757600080fd5b82356001600160401b03808211156153ae57600080fd5b818501915085601f8301126153c257600080fd5b81356153d061502682614f48565b81815260059190911b830184019084810190888311156153ef57600080fd5b8585015b838110156150e35780358581111561540b5760008081fd5b86016060818c03601f19018113156154235760008081fd5b61542b614ef6565b898301358881111561543d5760008081fd5b61544b8e8c83870101614f6b565b8252506040808401358b830152615463838501614c80565b90820152855250509186019186016153f3565b6000806000806080858703121561548c57600080fd5b61549585614c80565b9350602085013592506154aa60408601614c80565b91506154b860608601614c80565b905092959194509250565b600080604083850312156154d657600080fd5b82356001600160401b038111156154ec57600080fd5b6154f885828601614f6b565b95602094909401359450505050565b6000806040838503121561551a57600080fd5b8235915061552a60208401614c80565b90509250929050565b60208082526058908201527f506f6c79676f6e5a6b45564d3a3a766572696679426174636865733a2070656e60408201527f64696e6753746174654e756d206d757374206265206c657373206f7220657175606082015277616c207468616e206c61737450656e64696e67537461746560401b608082015260a00190565b6020808252604c90820152600080516020615dc883398151915260408201527f744e756d4261746368206d757374206d61746368207468652070656e64696e6760608201526b040e6e8c2e8ca40c4c2e8c6d60a31b608082015260a00190565b6020808252604390820152600080516020615dc883398151915260408201527f744e756d426174636820737461746520726f6f7420646f6573206e6f742065786060820152621a5cdd60ea1b608082015260a00190565b6020808252605d90820152600080516020615dc883398151915260408201527f744e756d4261746368206d757374206265206c657373206f7220657175616c2060608201527f7468616e2063757272656e744c61737456657269666965644261746368000000608082015260a00190565b60208082526057908201527f506f6c79676f6e5a6b45564d3a3a766572696679426174636865733a2066696e60408201527f616c4e65774261746368206d75737420626520626967676572207468616e20636060820152760eae4e4cadce898c2e6e8accae4d2ccd2cac884c2e8c6d604b1b608082015260a00190565b60008251615768818460208701614cf1565b9190910192915050565b60006020828403121561578457600080fd5b5051919050565b634e487b7160e01b600052601260045260246000fd5b6000826157b0576157b061578b565b500690565b600181811c908216806157c957607f821691505b6020821081036157e957634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526023908201527f506f6c79676f6e5a6b45564d3a3a6f6e6c7941646d696e3a204f6e6c7920616460408201526236b4b760e91b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b60006001600160401b0380831681851680830382111561586a5761586a615832565b01949350505050565b60208082526042908201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960408201527f53746174653a206f6e6c79206966206e6f7420656d657267656e637920737461606082015261746560f01b608082015260a00190565b634e487b7160e01b600052603260045260246000fd5b60006001600160401b0380831681810361590d5761590d615832565b6001019392505050565b928352602083019190915260c01b6001600160c01b031916604082015260480190565b9485526020850193909352604084019190915260c01b6001600160c01b0319166060808401919091521b6001600160601b0319166068820152607c0190565b60006001820161598b5761598b615832565b5060010190565b60006001600160401b03838116908316818110156159b2576159b2615832565b039392505050565b6000828210156159cc576159cc615832565b500390565b60008160001904831182151516156159eb576159eb615832565b500290565b601f821115614a6057600081815260208120601f850160051c81016020861015615a175750805b601f850160051c820191505b81811015613f9f57828155600101615a23565b81516001600160401b03811115615a4f57615a4f614eb8565b615a6381615a5d84546157b5565b846159f0565b602080601f831160018114615a985760008415615a805750858301515b600019600386901b1c1916600185901b178555613f9f565b600085815260208120601f198616915b82811015615ac757888601518255948401946001909101908401615aa8565b5085821015615ae55787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600082615b0457615b0461578b565b500490565b60208082526043908201527f506f6c79676f6e5a6b45564d3a3a6973466f7263654261746368416c6c6f776560408201527f643a204f6e6c7920696620666f72636520626174636820697320617661696c61606082015262626c6560e81b608082015260a00190565b60008219821115615b8557615b85615832565b500190565b6020808252603c908201527f506f6c79676f6e5a6b45564d3a3a6f6e6c79547275737465644167677265676160408201527f746f723a204f6e6c7920747275737465642061676772656761746f7200000000606082015260800190565b8381526001600160a01b0383166020820152606060408201819052600090615c1190830184614d1d565b95945050505050565b60006001600160401b0380841680615c3457615c3461578b565b92169190910492915050565b61012081016040808784376000838201818152879190815b6002811015615c7857848483379084018281529284019290600101615c58565b5050828760c0870137610100850181815286935091505b6001811015615cae578251825260209283019290910190600101615c8f565b50505095945050505050565b600060208284031215615ccc57600080fd5b8151614d5c81615325565b600181815b80851115615d12578160001904821115615cf857615cf8615832565b80851615615d0557918102915b93841c9390800290615cdc565b509250929050565b600082615d2957506001614d74565b81615d3657506000614d74565b8160018114615d4c5760028114615d5657615d72565b6001915050614d74565b60ff841115615d6757615d67615832565b50506001821b614d74565b5060208310610133831016604e8410600b8410161715615d95575081810a614d74565b615d9f8383615cd7565b8060001904821115615db357615db3615832565b029392505050565b6000614d5c8383615d1a56fe506f6c79676f6e5a6b45564d3a3a766572696679426174636865733a20696e69506f6c79676f6e5a6b45564d3a3a6163746976617465456d657267656e637953506f6c79676f6e5a6b45564d3a3a5f766572696679426174636865733a20696e506f6c79676f6e5a6b45564d3a3a5f70726f766544697374696e637450656e64506f6c79676f6e5a6b45564d3a3a73657175656e6365466f726365426174636830644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001506f6c79676f6e5a6b45564d3a3a73657175656e6365426174636865733a2046a26469706673582212204263a1976e5f7199ca31643323da59af5b19b83ea60d3020966f4237eee2909764736f6c634300080f0033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/deployment/genesis-gen.json b/deployment/genesis-gen.json index 14e0cf1..f685119 100644 --- a/deployment/genesis-gen.json +++ b/deployment/genesis-gen.json @@ -1,6 +1,6 @@ { - "defaultChainId": 1000, + "defaultChainId": 0, "sequencerAddress": "0xC949254d682D8c9ad5682521675b8F43b102aec4", "genesis": [ { @@ -23,7 +23,6 @@ "value": "0", "gasLimit": 10000000, "gasPrice": "0", - "chainId": 1000, "paramsDeploy": { "types": [ "address" @@ -41,7 +40,6 @@ "value": "0", "gasLimit": 10000000, "gasPrice": "0", - "chainId": 1000, "contractName": "PolygonZkEVMBridge" }, { @@ -51,7 +49,6 @@ "value": "0", "gasLimit": 10000000, "gasPrice": "0", - "chainId": 1000, "function": "initialize", "paramsFunction": [ 1, diff --git a/deployment/genesis.json b/deployment/genesis.json index 057ae78..e844661 100644 --- a/deployment/genesis.json +++ b/deployment/genesis.json @@ -1,11 +1,11 @@ { - "root": "0x0ec110dcc0e7466a1192c4c9a8580cd4eeb4de9b521e09c60fceec5a68837fc5", + "root": "0xc1086c5f49799b55c6dfe71499506457e1bca9cc6d745d6e770f152c4a73862e", "genesis": [ { "balance": "200000000000000000000000000", "nonce": "1", "address": "0x9d98deabc42dd696deb9e40b4f1cab7ddbf55988", - "bytecode": "0x608060405260043610620001675760003560e01c80637b6323c111620000c5578063d02103ca1162000078578063d02103ca146200047d578063d96a15f7146200049f578063dbc1697614620004b6578063ed6be5c914620004ce578063ee25560b14620004e5578063ff634ed7146200051657600080fd5b80637b6323c1146200037057806381b1c17414620003955780639e34070f14620003cf578063a08e8a0814620003f4578063aaa13cc2146200041e578063bab161bf146200044357600080fd5b806334ac9cf2116200011e57806334ac9cf214620002a25780633ae0504714620002c45780633da8168214620002dc5780633e1970431462000301578063463855491462000326578063647c576c146200034b57600080fd5b80630871e971146200016c57806315064c9614620001855780632072f6c514620001b657806322e95f2c14620001ce5780632dfdf0b5146200020c578063318aee3d1462000233575b600080fd5b620001836200017d3660046200244d565b6200052d565b005b3480156200019257600080fd5b50602254620001a19060ff1681565b60405190151581526020015b60405180910390f35b348015620001c357600080fd5b5062000183620009cd565b348015620001db57600080fd5b50620001f3620001ed366004620024da565b62000a06565b6040516001600160a01b039091168152602001620001ad565b3480156200021957600080fd5b506200022460215481565b604051908152602001620001ad565b3480156200024057600080fd5b506200027d6200025236600462002516565b60256020526000908152604090205463ffffffff81169064010000000090046001600160a01b031682565b6040805163ffffffff90931683526001600160a01b03909116602083015201620001ad565b348015620002af57600080fd5b50602754620001f3906001600160a01b031681565b348015620002d157600080fd5b506200022462000a59565b348015620002e957600080fd5b50620001a1620002fb36600462002605565b62000b4c565b3480156200030e57600080fd5b50620002246200032036600462002683565b62000c4e565b3480156200033357600080fd5b50620001836200034536600462002794565b62000cdb565b3480156200035857600080fd5b50620001836200036a3660046200287b565b62000e81565b3480156200037d57600080fd5b50620001836200038f36600462002794565b62000fe0565b348015620003a257600080fd5b50620001f3620003b4366004620028cb565b6024602052600090815260409020546001600160a01b031681565b348015620003dc57600080fd5b50620001a1620003ee366004620028cb565b62001469565b3480156200040157600080fd5b506200040b600081565b60405160ff9091168152602001620001ad565b3480156200042b57600080fd5b50620001f36200043d366004620028e5565b620014ae565b3480156200045057600080fd5b506022546200046790610100900463ffffffff1681565b60405163ffffffff9091168152602001620001ad565b3480156200048a57600080fd5b50602654620001f3906001600160a01b031681565b62000183620004b036600462002999565b620015c5565b348015620004c357600080fd5b506200018362001771565b348015620004db57600080fd5b5062000467600081565b348015620004f257600080fd5b506200022462000504366004620028cb565b60236020526000908152604090205481565b3480156200052357600080fd5b506200040b600181565b60225460ff16156200055c5760405162461bcd60e51b8152600401620005539062002a01565b60405180910390fd5b60225463ffffffff610100909104811690861603620005e45760405162461bcd60e51b815260206004820152603d60248201527f506f6c79676f6e5a6b45564d4272696467653a3a62726964676541737365743a60448201527f2044657374696e6174696f6e2063616e6e6f7420626520697473656c66000000606482015260840162000553565b60008060606001600160a01b03891662000687578534146200067d5760405162461bcd60e51b8152602060048201526044602482018190527f506f6c79676f6e5a6b45564d4272696467653a3a62726964676541737365743a908201527f20416d6f756e7420646f6573206e6f74206d61746368206d6573736167652e76606482015263616c756560e01b608482015260a40162000553565b60009150620008e7565b6001600160a01b03808a1660009081526025602090815260409182902082518084019093525463ffffffff81168352640100000000900490921691810182905290156200074457604051632770a7eb60e21b8152336004820152602481018890526001600160a01b038b1690639dc29fac90604401600060405180830381600087803b1580156200071757600080fd5b505af11580156200072c573d6000803e3d6000fd5b505050508060200151935080600001519250620008e5565b84156200075957620007598a888888620017a8565b620007706001600160a01b038b1633308a62001bd0565b899350602260019054906101000a900463ffffffff169250896001600160a01b03166306fdde036040518163ffffffff1660e01b8152600401600060405180830381865afa158015620007c7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620007f1919081019062002ae4565b8a6001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa15801562000830573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200085a919081019062002ae4565b8b6001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000899573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620008bf919062002b1d565b604051602001620008d39392919062002b6b565b60405160208183030381529060405291505b505b7f501781209a1f8899323b96b4ef08b168df93e0a90c673d1e4cce39366cb62f9b600083858b8b8b876021546040516200092998979695949392919062002ba8565b60405180910390a1620009546200094e600084868c8c8c888051906020012062000c4e565b62001c3d565b6026546001600160a01b03166333d6247d6200096f62000a59565b6040518263ffffffff1660e01b81526004016200098e91815260200190565b600060405180830381600087803b158015620009a957600080fd5b505af1158015620009be573d6000803e3d6000fd5b50505050505050505050505050565b6027546001600160a01b03163314620009fa5760405162461bcd60e51b8152600401620005539062002c15565b62000a0462001d8e565b565b600060246000848460405160200162000a2192919062002c72565b60408051601f19818403018152918152815160209283012083529082019290925201600020546001600160a01b031690505b92915050565b602154600090819081805b602081101562000b43578260011660010362000ac4576001816020811062000a905762000a9062002c9c565b0154604080516020810192909252810185905260600160405160208183030381529060405280519060200120935062000af1565b60408051602081018690529081018390526060016040516020818303038152906040528051906020012093505b62000afe60028462002cde565b6040805160208101859052908101849052909350606001604051602081830303815290604052805190602001209150808062000b3a9062002cf5565b91505062000a64565b50919392505050565b60008467ffffffffffffffff8416825b602081101562000c3f578160011660010362000bc95786818151811062000b875762000b8762002c9c565b60200260200101518360405160200162000bab929190918252602082015260400190565b60405160208183030381529060405280519060200120925062000c1b565b8287828151811062000bdf5762000bdf62002c9c565b602002602001015160405160200162000c02929190918252602082015260400190565b6040516020818303038152906040528051906020012092505b62000c2860028362002cde565b91508062000c368162002cf5565b91505062000b5c565b5050821490505b949350505050565b6040516001600160f81b031960f889901b1660208201526001600160e01b031960e088811b821660218401526001600160601b0319606089811b821660258601529188901b909216603984015285901b16603d8201526051810183905260718101829052600090609101604051602081830303815290604052805190602001209050979650505050505050565b60225460ff161562000d015760405162461bcd60e51b8152600401620005539062002a01565b62000d178a8a8a8a8a8a8a8a8a8a600162001dec565b62000d288963ffffffff166200207d565b6000836001600160a01b03168387898560405160240162000d4c9392919062002d11565b60408051601f198184030181529181526020820180516001600160e01b0316630c035af960e11b1790525162000d83919062002d4c565b60006040518083038185875af1925050503d806000811462000dc2576040519150601f19603f3d011682016040523d82523d6000602084013e62000dc7565b606091505b505090508062000e335760405162461bcd60e51b815260206004820152603060248201527f506f6c79676f6e5a6b45564d4272696467653a3a636c61696d4d65737361676560448201526f0e8813595cdcd859d94819985a5b195960821b606482015260840162000553565b7f25308c93ceeed162da955b3f7ce3e3f93606579e40fb92029faa9efe275459838a8888878760405162000e6c95949392919062002d6a565b60405180910390a15050505050505050505050565b600054610100900460ff161580801562000ea25750600054600160ff909116105b8062000ebe5750303b15801562000ebe575060005460ff166001145b62000f235760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840162000553565b6000805460ff19166001179055801562000f47576000805461ff0019166101001790555b6022805463ffffffff86166101000264ffffffff0019909116179055602680546001600160a01b038086166001600160a01b0319928316179092556027805492851692909116919091179055801562000fda576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b60225460ff1615620010065760405162461bcd60e51b8152600401620005539062002a01565b6200101c8a8a8a8a8a8a8a8a8a8a600062001dec565b6200102d8963ffffffff166200207d565b6001600160a01b0385166200112457604080516000808252602082019092526001600160a01b03851690849060405162001068919062002d4c565b60006040518083038185875af1925050503d8060008114620010a7576040519150601f19603f3d011682016040523d82523d6000602084013e620010ac565b606091505b50509050806200111d5760405162461bcd60e51b815260206004820152603560248201527f506f6c79676f6e5a6b45564d4272696467653a3a636c61696d41737365743a20604482015274115d1a195c881d1c985b9cd9995c8819985a5b1959605a1b606482015260840162000553565b506200141c565b60225463ffffffff6101009091048116908716036200115957620011536001600160a01b0386168484620020bf565b6200141c565b600086866040516020016200117092919062002c72565b60408051601f198184030181529181528151602092830120600081815260249093529120549091506001600160a01b031680620013b457600080600085806020019051810190620011c2919062002da1565b925092509250600085848484604051620011dc90620023b3565b620011ea9392919062002b6b565b8190604051809103906000f59050801580156200120b573d6000803e3d6000fd5b506040516340c10f1960e01b81526001600160a01b038b81166004830152602482018b9052919250908216906340c10f1990604401600060405180830381600087803b1580156200125b57600080fd5b505af115801562001270573d6000803e3d6000fd5b50505050806024600088815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060405180604001604052808d63ffffffff1681526020018c6001600160a01b031681525060256000836001600160a01b03166001600160a01b0316815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a8154816001600160a01b0302191690836001600160a01b031602179055509050507fccd7715648d1f2bb13e158f96b5b6c3aeda555d4cb87112e274a6f28bc571d598c8c83604051620013a29392919063ffffffff9390931683526001600160a01b03918216602084015216604082015260600190565b60405180910390a15050505062001419565b6040516340c10f1960e01b81526001600160a01b038681166004830152602482018690528216906340c10f1990604401600060405180830381600087803b158015620013ff57600080fd5b505af115801562001414573d6000803e3d6000fd5b505050505b50505b7f25308c93ceeed162da955b3f7ce3e3f93606579e40fb92029faa9efe2754598389878786866040516200145595949392919062002d6a565b60405180910390a150505050505050505050565b6000806200147a6101008462002cde565b905060006200148c6101008562002e17565b60009283526023602052604090922054600190921b9182169091149392505050565b6000808888604051602001620014c692919062002c72565b604051602081830303815290604052805190602001209050600060ff60f81b308360405180602001620014f990620023b3565b601f1982820381018352601f90910116604081905262001526908d908d908d908d908d9060200162002e57565b60408051601f198184030181529082905262001546929160200162002e98565b604051602081830303815290604052805190602001206040516020016200159f94939291906001600160f81b031994909416845260609290921b6001600160601b03191660018401526015830152603582015260550190565b60408051808303601f1901815291905280516020909101209a9950505050505050505050565b60225460ff1615620015eb5760405162461bcd60e51b8152600401620005539062002a01565b60225463ffffffff610100909104811690841603620016735760405162461bcd60e51b815260206004820152603f60248201527f506f6c79676f6e5a6b45564d4272696467653a3a6272696467654d657373616760448201527f653a2044657374696e6174696f6e2063616e6e6f7420626520697473656c6600606482015260840162000553565b7f501781209a1f8899323b96b4ef08b168df93e0a90c673d1e4cce39366cb62f9b6001602260019054906101000a900463ffffffff163386863487602154604051620016c798979695949392919062002ba8565b60405180910390a1620016fe6200094e6001602260019054906101000a900463ffffffff1633878734888051906020012062000c4e565b6026546001600160a01b03166333d6247d6200171962000a59565b6040518263ffffffff1660e01b81526004016200173891815260200190565b600060405180830381600087803b1580156200175357600080fd5b505af115801562001768573d6000803e3d6000fd5b50505050505050565b6027546001600160a01b031633146200179e5760405162461bcd60e51b8152600401620005539062002c15565b62000a04620020f1565b6000620017eb83838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250620021a092505050565b9050632afa533160e01b6001600160e01b0319821601620019e45760008080808080806200181d896004818d62002ecb565b8101906200182c919062002ef7565b9650965096509650965096509650336001600160a01b0316876001600160a01b0316146200186e5760405162461bcd60e51b8152600401620005539062002f52565b6001600160a01b0386163014620018995760405162461bcd60e51b8152600401620005539062002faf565b8a8514620019105760405162461bcd60e51b815260206004820152603960248201527f506f6c79676f6e5a6b45564d4272696467653a3a5f7065726d69743a2050657260448201527f6d697420616d6f756e7420646f6573206e6f74206d6174636800000000000000606482015260840162000553565b604080516001600160a01b0389811660248301528881166044830152606482018890526084820187905260ff861660a483015260c4820185905260e48083018590528351808403909101815261010490920183526020820180516001600160e01b031663d505accf60e01b1790529151918e169162001990919062002d4c565b6000604051808303816000865af19150503d8060008114620019cf576040519150601f19603f3d011682016040523d82523d6000602084013e620019d4565b606091505b5050505050505050505062001bc9565b6001600160e01b031981166323f2ebc360e21b1462001a5a5760405162461bcd60e51b815260206004820152602b60248201527f506f6c79676f6e5a6b45564d4272696467653a3a5f7065726d69743a204e6f7460448201526a081d985b1a590818d85b1b60aa1b606482015260840162000553565b60008080808080808062001a728a6004818e62002ecb565b81019062001a81919062003011565b97509750975097509750975097509750336001600160a01b0316886001600160a01b03161462001ac55760405162461bcd60e51b8152600401620005539062002f52565b6001600160a01b038716301462001af05760405162461bcd60e51b8152600401620005539062002faf565b604080516001600160a01b038a811660248301528981166044830152606482018990526084820188905286151560a483015260ff861660c483015260e482018590526101048083018590528351808403909101815261012490920183526020820180516001600160e01b03166323f2ebc360e21b1790529151918f169162001b79919062002d4c565b6000604051808303816000865af19150503d806000811462001bb8576040519150601f19603f3d011682016040523d82523d6000602084013e62001bbd565b606091505b50505050505050505050505b5050505050565b6040516001600160a01b038085166024830152831660448201526064810182905262000fda9085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152620021a7565b80600162001c4e602060026200319a565b62001c5a9190620031a8565b6021541062001cbf5760405162461bcd60e51b815260206004820152602a60248201527f4465706f736974436f6e74726163743a5f6465706f7369743a204d65726b6c65604482015269081d1c995948199d5b1b60b21b606482015260840162000553565b60016021600082825462001cd49190620031c2565b909155505060215460005b602081101562001d7e578160011660010362001d1457826001826020811062001d0c5762001d0c62002c9c565b015550505050565b6001816020811062001d2a5762001d2a62002c9c565b0154604080516020810192909252810184905260600160405160208183030381529060405280519060200120925060028262001d67919062002cde565b91508062001d758162002cf5565b91505062001cdf565b5062001d89620031dd565b505050565b60225460ff161562001db45760405162461bcd60e51b8152600401620005539062002a01565b6022805460ff191660011790556040517f2261efe5aef6fedc1fd1550b25facc9181745623049c7901287030b9ad1a549790600090a1565b62001dfd8a63ffffffff1662001469565b1562001e545760405162461bcd60e51b815260206004820152603060248201526000805160206200479b83398151915260448201526f08105b1c9958591e4818db185a5b595960821b606482015260840162000553565b6026546040805160208082018d90528183018c9052825180830384018152606083019384905280519101206312bd9b1960e11b90925260648101919091526000916001600160a01b03169063257b3632906084016020604051808303816000875af115801562001ec8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001eee9190620031f3565b90508060000362001f575760405162461bcd60e51b815260206004820152603760248201526000805160206200479b83398151915260448201527f20476c6f62616c45786974526f6f7420696e76616c6964000000000000000000606482015260840162000553565b60225463ffffffff878116610100909204161462001fd95760405162461bcd60e51b815260206004820152604360248201526000805160206200479b83398151915260448201527f2044657374696e6174696f6e206e6574776f726b20646f6573206e6f74206d616064820152620e8c6d60eb1b608482015260a40162000553565b602254600090610100900463ffffffff1662001ff757508862001ffa565b50895b6200202562002016848b8b8b8b8b8b8051906020012062000c4e565b8e8e63ffffffff168462000b4c565b620009be5760405162461bcd60e51b815260206004820152603260248201526000805160206200479b8339815191526044820152711024b73b30b634b21039b6ba10383937b7b360711b606482015260840162000553565b60006200208d6101008362002cde565b905060006200209f6101008462002e17565b6000928352602360205260409092208054600190931b9092179091555050565b6040516001600160a01b03831660248201526044810182905262001d8990849063a9059cbb60e01b9060640162001c05565b60225460ff166200216b5760405162461bcd60e51b815260206004820152603b60248201527f456d657267656e63794d616e616765723a3a6966456d657267656e637953746160448201527f74653a206f6e6c7920696620656d657267656e63792073746174650000000000606482015260840162000553565b6022805460ff191690556040517f1e5e34eea33501aecf2ebec9fe0e884a40804275ea7fe10b2ba084c8374308b390600090a1565b6020015190565b6000620021fe826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316620022809092919063ffffffff16565b80519091501562001d8957808060200190518101906200221f91906200320d565b62001d895760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840162000553565b606062000c46848460008585600080866001600160a01b03168587604051620022aa919062002d4c565b60006040518083038185875af1925050503d8060008114620022e9576040519150601f19603f3d011682016040523d82523d6000602084013e620022ee565b606091505b509150915062002301878383876200230c565b979650505050505050565b606083156200238057825160000362002378576001600160a01b0385163b620023785760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640162000553565b508162000c46565b62000c468383815115620023975781518083602001fd5b8060405162461bcd60e51b81526004016200055391906200322d565b611558806200324383390190565b6001600160a01b0381168114620023d757600080fd5b50565b8035620023e781620023c1565b919050565b803563ffffffff81168114620023e757600080fd5b60008083601f8401126200241457600080fd5b50813567ffffffffffffffff8111156200242d57600080fd5b6020830191508360208285010111156200244657600080fd5b9250929050565b60008060008060008060a087890312156200246757600080fd5b86356200247481620023c1565b95506200248460208801620023ec565b945060408701356200249681620023c1565b935060608701359250608087013567ffffffffffffffff811115620024ba57600080fd5b620024c889828a0162002401565b979a9699509497509295939492505050565b60008060408385031215620024ee57600080fd5b620024f983620023ec565b915060208301356200250b81620023c1565b809150509250929050565b6000602082840312156200252957600080fd5b81356200253681620023c1565b9392505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156200257f576200257f6200253d565b604052919050565b600082601f8301126200259957600080fd5b8135602067ffffffffffffffff821115620025b857620025b86200253d565b8160051b620025c982820162002553565b9283528481018201928281019087851115620025e457600080fd5b83870192505b848310156200230157823582529183019190830190620025ea565b600080600080608085870312156200261c57600080fd5b84359350602085013567ffffffffffffffff808211156200263c57600080fd5b6200264a8883890162002587565b94506040870135915080821682146200266257600080fd5b509396929550929360600135925050565b60ff81168114620023d757600080fd5b600080600080600080600060e0888a0312156200269f57600080fd5b8735620026ac8162002673565b9650620026bc60208901620023ec565b95506040880135620026ce81620023c1565b9450620026de60608901620023ec565b93506080880135620026f081620023c1565b9699959850939692959460a0840135945060c09093013592915050565b600067ffffffffffffffff8211156200272a576200272a6200253d565b50601f01601f191660200190565b600082601f8301126200274a57600080fd5b8135620027616200275b826200270d565b62002553565b8181528460208386010111156200277757600080fd5b816020850160208301376000918101602001919091529392505050565b6000806000806000806000806000806101408b8d031215620027b557600080fd5b8a3567ffffffffffffffff80821115620027ce57600080fd5b620027dc8e838f0162002587565b9b50620027ec60208e01620023ec565b9a5060408d0135995060608d013598506200280a60808e01620023ec565b97506200281a60a08e01620023da565b96506200282a60c08e01620023ec565b95506200283a60e08e01620023da565b94506101008d013593506101208d01359150808211156200285a57600080fd5b50620028698d828e0162002738565b9150509295989b9194979a5092959850565b6000806000606084860312156200289157600080fd5b6200289c84620023ec565b92506020840135620028ae81620023c1565b91506040840135620028c081620023c1565b809150509250925092565b600060208284031215620028de57600080fd5b5035919050565b600080600080600080600060a0888a0312156200290157600080fd5b6200290c88620023ec565b965060208801356200291e81620023c1565b9550604088013567ffffffffffffffff808211156200293c57600080fd5b6200294a8b838c0162002401565b909750955060608a01359150808211156200296457600080fd5b50620029738a828b0162002401565b9094509250506080880135620029898162002673565b8091505092959891949750929550565b600080600060608486031215620029af57600080fd5b620029ba84620023ec565b92506020840135620029cc81620023c1565b9150604084013567ffffffffffffffff811115620029e957600080fd5b620029f78682870162002738565b9150509250925092565b60208082526042908201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960408201527f53746174653a206f6e6c79206966206e6f7420656d657267656e637920737461606082015261746560f01b608082015260a00190565b60005b8381101562002a8657818101518382015260200162002a6c565b8381111562000fda5750506000910152565b600082601f83011262002aaa57600080fd5b815162002abb6200275b826200270d565b81815284602083860101111562002ad157600080fd5b62000c4682602083016020870162002a69565b60006020828403121562002af757600080fd5b815167ffffffffffffffff81111562002b0f57600080fd5b62000c468482850162002a98565b60006020828403121562002b3057600080fd5b8151620025368162002673565b6000815180845262002b5781602086016020860162002a69565b601f01601f19169290920160200192915050565b60608152600062002b80606083018662002b3d565b828103602084015262002b94818662002b3d565b91505060ff83166040830152949350505050565b60ff8916815263ffffffff88811660208301526001600160a01b03888116604084015287821660608401528616608083015260a0820185905261010060c0830181905260009162002bfc8483018762002b3d565b925080851660e085015250509998505050505050505050565b6020808252603a908201527f506f6c79676f6e5a6b45564d3a3a6f6e6c79506f6c79676f6e5a6b45564d3a2060408201527f6f6e6c7920506f6c79676f6e5a6b45564d20636f6e7472616374000000000000606082015260800190565b60e09290921b6001600160e01b031916825260601b6001600160601b031916600482015260180190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60008262002cf05762002cf062002cb2565b500490565b60006001820162002d0a5762002d0a62002cc8565b5060010190565b6001600160a01b038416815263ffffffff8316602082015260606040820181905260009062002d439083018462002b3d565b95945050505050565b6000825162002d6081846020870162002a69565b9190910192915050565b63ffffffff95861681529390941660208401526001600160a01b039182166040840152166060820152608081019190915260a00190565b60008060006060848603121562002db757600080fd5b835167ffffffffffffffff8082111562002dd057600080fd5b62002dde8783880162002a98565b9450602086015191508082111562002df557600080fd5b5062002e048682870162002a98565b9250506040840151620028c08162002673565b60008262002e295762002e2962002cb2565b500690565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60608152600062002e6d60608301878962002e2e565b828103602084015262002e8281868862002e2e565b91505060ff831660408301529695505050505050565b6000835162002eac81846020880162002a69565b83519083019062002ec281836020880162002a69565b01949350505050565b6000808585111562002edc57600080fd5b8386111562002eea57600080fd5b5050820193919092039150565b600080600080600080600060e0888a03121562002f1357600080fd5b873562002f2081620023c1565b9650602088013562002f3281620023c1565b955060408801359450606088013593506080880135620026f08162002673565b6020808252603c908201527f506f6c79676f6e5a6b45564d4272696467653a3a5f7065726d69743a2050657260408201527f6d6974206f776e6572206d757374206265207468652073656e64657200000000606082015260800190565b60208082526033908201527f506f6c79676f6e5a6b45564d4272696467653a3a5f7065726d69743a205370656040820152726e646572206d7573742062652027746869732760681b606082015260800190565b8015158114620023d757600080fd5b600080600080600080600080610100898b0312156200302f57600080fd5b88356200303c81620023c1565b975060208901356200304e81620023c1565b9650604089013595506060890135945060808901356200306e8162003002565b935060a0890135620030808162002673565b979a969950949793969295929450505060c08201359160e0013590565b600181815b80851115620030de578160001904821115620030c257620030c262002cc8565b80851615620030d057918102915b93841c9390800290620030a2565b509250929050565b600082620030f75750600162000a53565b81620031065750600062000a53565b81600181146200311f57600281146200312a576200314a565b600191505062000a53565b60ff8411156200313e576200313e62002cc8565b50506001821b62000a53565b5060208310610133831016604e8410600b84101617156200316f575081810a62000a53565b6200317b83836200309d565b806000190482111562003192576200319262002cc8565b029392505050565b6000620025368383620030e6565b600082821015620031bd57620031bd62002cc8565b500390565b60008219821115620031d857620031d862002cc8565b500190565b634e487b7160e01b600052600160045260246000fd5b6000602082840312156200320657600080fd5b5051919050565b6000602082840312156200322057600080fd5b8151620025368162003002565b60208152600062002536602083018462002b3d56fe60c06040523480156200001157600080fd5b5060405162001558380380620015588339810160408190526200003491620002ad565b82826003620000448382620003c1565b506004620000538282620003c1565b5050600580546001600160a81b0319163360ff60a01b191617600160a01b60ff851602179055504660808190526200008b9062000098565b60a052506200048d915050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f620000c562000146565b805160209182012060408051808201825260018152603160f81b90840152805192830193909352918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060820152608081018390523060a082015260c001604051602081830303815290604052805190602001209050919050565b606060038054620001579062000332565b80601f0160208091040260200160405190810160405280929190818152602001828054620001859062000332565b8015620001d65780601f10620001aa57610100808354040283529160200191620001d6565b820191906000526020600020905b815481529060010190602001808311620001b857829003601f168201915b5050505050905090565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200020857600080fd5b81516001600160401b0380821115620002255762000225620001e0565b604051601f8301601f19908116603f01168101908282118183101715620002505762000250620001e0565b816040528381526020925086838588010111156200026d57600080fd5b600091505b8382101562000291578582018301518183018401529082019062000272565b83821115620002a35760008385830101525b9695505050505050565b600080600060608486031215620002c357600080fd5b83516001600160401b0380821115620002db57600080fd5b620002e987838801620001f6565b945060208601519150808211156200030057600080fd5b506200030f86828701620001f6565b925050604084015160ff811681146200032757600080fd5b809150509250925092565b600181811c908216806200034757607f821691505b6020821081036200036857634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620003bc57600081815260208120601f850160051c81016020861015620003975750805b601f850160051c820191505b81811015620003b857828155600101620003a3565b5050505b505050565b81516001600160401b03811115620003dd57620003dd620001e0565b620003f581620003ee845462000332565b846200036e565b602080601f8311600181146200042d5760008415620004145750858301515b600019600386901b1c1916600185901b178555620003b8565b600085815260208120601f198616915b828110156200045e578886015182559484019460019091019084016200043d565b50858210156200047d5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60805160a05161109e620004ba60003960006104690152600081816102f90152610433015261109e6000f3fe608060405234801561001057600080fd5b50600436106101375760003560e01c806370a08231116100b8578063a457c2d71161007c578063a457c2d7146102ce578063a9059cbb146102e1578063cd0d0096146102f4578063d505accf1461031b578063dd62ed3e1461032e578063ffa1ad741461034157600080fd5b806370a082311461023f5780637ecebe001461026857806395d89b41146102885780639dc29fac14610290578063a3c573eb146102a357600080fd5b806330adf81f116100ff57806330adf81f146101c9578063313ce567146101f05780633644e5151461020f578063395093511461021757806340c10f191461022a57600080fd5b806306fdde031461013c578063095ea7b31461015a57806318160ddd1461017d57806320606b701461018f57806323b872dd146101b6575b600080fd5b610144610361565b6040516101519190610df8565b60405180910390f35b61016d610168366004610e69565b6103f3565b6040519015158152602001610151565b6002545b604051908152602001610151565b6101817f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81565b61016d6101c4366004610e93565b61040b565b6101817f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b600554600160a01b900460ff1660405160ff9091168152602001610151565b61018161042f565b61016d610225366004610e69565b61048b565b61023d610238366004610e69565b6104ad565b005b61018161024d366004610ecf565b6001600160a01b031660009081526020819052604090205490565b610181610276366004610ecf565b60066020526000908152604090205481565b6101446104ee565b61023d61029e366004610e69565b6104fd565b6005546102b6906001600160a01b031681565b6040516001600160a01b039091168152602001610151565b61016d6102dc366004610e69565b610531565b61016d6102ef366004610e69565b6105ac565b6101817f000000000000000000000000000000000000000000000000000000000000000081565b61023d610329366004610ef1565b6105ba565b61018161033c366004610f64565b6107f5565b610144604051806040016040528060018152602001603160f81b81525081565b60606003805461037090610f97565b80601f016020809104026020016040519081016040528092919081815260200182805461039c90610f97565b80156103e95780601f106103be576101008083540402835291602001916103e9565b820191906000526020600020905b8154815290600101906020018083116103cc57829003601f168201915b5050505050905090565b600033610401818585610820565b5060019392505050565b600033610419858285610945565b6104248585856109bf565b506001949350505050565b60007f000000000000000000000000000000000000000000000000000000000000000046146104665761046146610b63565b905090565b507f000000000000000000000000000000000000000000000000000000000000000090565b60003361040181858561049e83836107f5565b6104a89190610fe7565b610820565b6005546001600160a01b031633146104e05760405162461bcd60e51b81526004016104d790610fff565b60405180910390fd5b6104ea8282610c0f565b5050565b60606004805461037090610f97565b6005546001600160a01b031633146105275760405162461bcd60e51b81526004016104d790610fff565b6104ea8282610cce565b6000338161053f82866107f5565b90508381101561059f5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016104d7565b6104248286868403610820565b6000336104018185856109bf565b834211156106165760405162461bcd60e51b8152602060048201526024808201527f546f6b656e577261707065643a3a7065726d69743a20457870697265642070656044820152631c9b5a5d60e21b60648201526084016104d7565b6001600160a01b038716600090815260066020526040812080547f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918a918a918a9190866106638361104f565b909155506040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e00160405160208183030381529060405280519060200120905060006106c161042f565b60405161190160f01b602082015260228101919091526042810183905260620160408051601f198184030181528282528051602091820120600080855291840180845281905260ff89169284019290925260608301879052608083018690529092509060019060a0016020604051602081039080840390855afa15801561074c573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116158015906107825750896001600160a01b0316816001600160a01b0316145b6107de5760405162461bcd60e51b815260206004820152602760248201527f546f6b656e577261707065643a3a7065726d69743a20496e76616c6964207369604482015266676e617475726560c81b60648201526084016104d7565b6107e98a8a8a610820565b50505050505050505050565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166108825760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016104d7565b6001600160a01b0382166108e35760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016104d7565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b600061095184846107f5565b905060001981146109b957818110156109ac5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016104d7565b6109b98484848403610820565b50505050565b6001600160a01b038316610a235760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016104d7565b6001600160a01b038216610a855760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016104d7565b6001600160a01b03831660009081526020819052604090205481811015610afd5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016104d7565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36109b9565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f610b8e610361565b805160209182012060408051808201825260018152603160f81b90840152805192830193909352918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060820152608081018390523060a082015260c001604051602081830303815290604052805190602001209050919050565b6001600160a01b038216610c655760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016104d7565b8060026000828254610c779190610fe7565b90915550506001600160a01b038216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b6001600160a01b038216610d2e5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016104d7565b6001600160a01b03821660009081526020819052604090205481811015610da25760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016104d7565b6001600160a01b0383166000818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101610938565b600060208083528351808285015260005b81811015610e2557858101830151858201604001528201610e09565b81811115610e37576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b0381168114610e6457600080fd5b919050565b60008060408385031215610e7c57600080fd5b610e8583610e4d565b946020939093013593505050565b600080600060608486031215610ea857600080fd5b610eb184610e4d565b9250610ebf60208501610e4d565b9150604084013590509250925092565b600060208284031215610ee157600080fd5b610eea82610e4d565b9392505050565b600080600080600080600060e0888a031215610f0c57600080fd5b610f1588610e4d565b9650610f2360208901610e4d565b95506040880135945060608801359350608088013560ff81168114610f4757600080fd5b9699959850939692959460a0840135945060c09093013592915050565b60008060408385031215610f7757600080fd5b610f8083610e4d565b9150610f8e60208401610e4d565b90509250929050565b600181811c90821680610fab57607f821691505b602082108103610fcb57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60008219821115610ffa57610ffa610fd1565b500190565b60208082526030908201527f546f6b656e577261707065643a3a6f6e6c794272696467653a204e6f7420506f60408201526f6c79676f6e5a6b45564d42726964676560801b606082015260800190565b60006001820161106157611061610fd1565b506001019056fea26469706673582212205af0e6dd4760d4ae367515578b46c4d5988b10ae47473e817626188baa0c03a264736f6c634300080f0033506f6c79676f6e5a6b45564d4272696467653a3a5f7665726966794c6561663aa2646970667358221220d45a8ebcef9fc50cf59227d05e3d4a6aa8384293f92bcc21bc9ac4198225157364736f6c634300080f0033", + "bytecode": "0x608060405260043610620001675760003560e01c80637b6323c111620000c5578063d02103ca1162000078578063d02103ca146200047d578063d96a15f7146200049f578063dbc1697614620004b6578063ed6be5c914620004ce578063ee25560b14620004e5578063ff634ed7146200051657600080fd5b80637b6323c1146200037057806381b1c17414620003955780639e34070f14620003cf578063a08e8a0814620003f4578063aaa13cc2146200041e578063bab161bf146200044357600080fd5b806334ac9cf2116200011e57806334ac9cf214620002a25780633ae0504714620002c45780633da8168214620002dc5780633e1970431462000301578063463855491462000326578063647c576c146200034b57600080fd5b80630871e971146200016c57806315064c9614620001855780632072f6c514620001b657806322e95f2c14620001ce5780632dfdf0b5146200020c578063318aee3d1462000233575b600080fd5b620001836200017d36600462002432565b6200052d565b005b3480156200019257600080fd5b50602254620001a19060ff1681565b60405190151581526020015b60405180910390f35b348015620001c357600080fd5b5062000183620009cf565b348015620001db57600080fd5b50620001f3620001ed366004620024be565b62000a08565b6040516001600160a01b039091168152602001620001ad565b3480156200021957600080fd5b506200022460215481565b604051908152602001620001ad565b3480156200024057600080fd5b506200027d62000252366004620024fa565b60256020526000908152604090205463ffffffff81169064010000000090046001600160a01b031682565b6040805163ffffffff90931683526001600160a01b03909116602083015201620001ad565b348015620002af57600080fd5b50602754620001f3906001600160a01b031681565b348015620002d157600080fd5b506200022462000a5b565b348015620002e957600080fd5b50620001a1620002fb366004620025e7565b62000b4e565b3480156200030e57600080fd5b50620002246200032036600462002664565b62000c4f565b3480156200033357600080fd5b50620001836200034536600462002774565b62000cdc565b3480156200035857600080fd5b50620001836200036a3660046200285a565b62000e82565b3480156200037d57600080fd5b50620001836200038f36600462002774565b62000fe1565b348015620003a257600080fd5b50620001f3620003b4366004620028aa565b6024602052600090815260409020546001600160a01b031681565b348015620003dc57600080fd5b50620001a1620003ee366004620028aa565b62001469565b3480156200040157600080fd5b506200040b600081565b60405160ff9091168152602001620001ad565b3480156200042b57600080fd5b50620001f36200043d366004620028c4565b620014ae565b3480156200045057600080fd5b506022546200046790610100900463ffffffff1681565b60405163ffffffff9091168152602001620001ad565b3480156200048a57600080fd5b50602654620001f3906001600160a01b031681565b62000183620004b036600462002977565b620015c5565b348015620004c357600080fd5b506200018362001771565b348015620004db57600080fd5b5062000467600081565b348015620004f257600080fd5b506200022462000504366004620028aa565b60236020526000908152604090205481565b3480156200052357600080fd5b506200040b600181565b60225460ff16156200055c5760405162461bcd60e51b81526004016200055390620029de565b60405180910390fd5b60225463ffffffff610100909104811690861603620005e45760405162461bcd60e51b815260206004820152603d60248201527f506f6c79676f6e5a6b45564d4272696467653a3a62726964676541737365743a60448201527f2044657374696e6174696f6e2063616e6e6f7420626520697473656c66000000606482015260840162000553565b60008060606001600160a01b03891662000687578534146200067d5760405162461bcd60e51b8152602060048201526044602482018190527f506f6c79676f6e5a6b45564d4272696467653a3a62726964676541737365743a908201527f20416d6f756e7420646f6573206e6f74206d61746368206d6573736167652e76606482015263616c756560e01b608482015260a40162000553565b60009150620008e9565b6001600160a01b03808a1660009081526025602090815260409182902082518084019093525463ffffffff81168352640100000000900490921691810182905290156200074657604051632770a7eb60e21b81526001600160a01b038b1690639dc29fac90620006fe9033908b9060040162002a46565b600060405180830381600087803b1580156200071957600080fd5b505af11580156200072e573d6000803e3d6000fd5b505050508060200151935080600001519250620008e7565b84156200075b576200075b8a888888620017a8565b620007726001600160a01b038b1633308a62001bcc565b899350602260019054906101000a900463ffffffff169250896001600160a01b03166306fdde036040518163ffffffff1660e01b8152600401600060405180830381865afa158015620007c9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620007f3919081019062002ada565b8a6001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa15801562000832573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200085c919081019062002ada565b8b6001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200089b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620008c1919062002b12565b604051602001620008d59392919062002b60565b60405160208183030381529060405291505b505b7f501781209a1f8899323b96b4ef08b168df93e0a90c673d1e4cce39366cb62f9b600083858b8b8b876021546040516200092b98979695949392919062002b9d565b60405180910390a16200095662000950600084868c8c8c888051906020012062000c4f565b62001c39565b6026546001600160a01b03166333d6247d6200097162000a5b565b6040518263ffffffff1660e01b81526004016200099091815260200190565b600060405180830381600087803b158015620009ab57600080fd5b505af1158015620009c0573d6000803e3d6000fd5b50505050505050505050505050565b6027546001600160a01b03163314620009fc5760405162461bcd60e51b8152600401620005539062002c0a565b62000a0662001d8a565b565b600060246000848460405160200162000a2392919062002c67565b60408051601f19818403018152918152815160209283012083529082019290925201600020546001600160a01b031690505b92915050565b602154600090819081805b602081101562000b45578260011660010362000ac6576001816020811062000a925762000a9262002c91565b0154604080516020810192909252810185905260600160405160208183030381529060405280519060200120935062000af3565b60408051602081018690529081018390526060016040516020818303038152906040528051906020012093505b62000b0060028462002cd3565b6040805160208101859052908101849052909350606001604051602081830303815290604052805190602001209150808062000b3c9062002cea565b91505062000a66565b50919392505050565b6000846001600160401b038416825b602081101562000c40578160011660010362000bca5786818151811062000b885762000b8862002c91565b60200260200101518360405160200162000bac929190918252602082015260400190565b60405160208183030381529060405280519060200120925062000c1c565b8287828151811062000be05762000be062002c91565b602002602001015160405160200162000c03929190918252602082015260400190565b6040516020818303038152906040528051906020012092505b62000c2960028362002cd3565b91508062000c378162002cea565b91505062000b5d565b5050821490505b949350505050565b6040516001600160f81b031960f889901b1660208201526001600160e01b031960e088811b821660218401526001600160601b0319606089811b821660258601529188901b909216603984015285901b16603d8201526051810183905260718101829052600090609101604051602081830303815290604052805190602001209050979650505050505050565b60225460ff161562000d025760405162461bcd60e51b81526004016200055390620029de565b62000d188a8a8a8a8a8a8a8a8a8a600162001de8565b62000d298963ffffffff1662002073565b6000836001600160a01b03168387898560405160240162000d4d9392919062002d06565b60408051601f198184030181529181526020820180516001600160e01b0316630c035af960e11b1790525162000d84919062002d41565b60006040518083038185875af1925050503d806000811462000dc3576040519150601f19603f3d011682016040523d82523d6000602084013e62000dc8565b606091505b505090508062000e345760405162461bcd60e51b815260206004820152603060248201527f506f6c79676f6e5a6b45564d4272696467653a3a636c61696d4d65737361676560448201526f0e8813595cdcd859d94819985a5b195960821b606482015260840162000553565b7f25308c93ceeed162da955b3f7ce3e3f93606579e40fb92029faa9efe275459838a8888878760405162000e6d95949392919062002d5f565b60405180910390a15050505050505050505050565b600054610100900460ff161580801562000ea35750600054600160ff909116105b8062000ebf5750303b15801562000ebf575060005460ff166001145b62000f245760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840162000553565b6000805460ff19166001179055801562000f48576000805461ff0019166101001790555b6022805463ffffffff86166101000264ffffffff0019909116179055602680546001600160a01b038086166001600160a01b0319928316179092556027805492851692909116919091179055801562000fdb576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b60225460ff1615620010075760405162461bcd60e51b81526004016200055390620029de565b6200101d8a8a8a8a8a8a8a8a8a8a600062001de8565b6200102e8963ffffffff1662002073565b6001600160a01b0385166200112557604080516000808252602082019092526001600160a01b03851690849060405162001069919062002d41565b60006040518083038185875af1925050503d8060008114620010a8576040519150601f19603f3d011682016040523d82523d6000602084013e620010ad565b606091505b50509050806200111e5760405162461bcd60e51b815260206004820152603560248201527f506f6c79676f6e5a6b45564d4272696467653a3a636c61696d41737365743a20604482015274115d1a195c881d1c985b9cd9995c8819985a5b1959605a1b606482015260840162000553565b506200141c565b60225463ffffffff6101009091048116908716036200115a57620011546001600160a01b0386168484620020b5565b6200141c565b600086866040516020016200117192919062002c67565b60408051601f198184030181529181528151602092830120600081815260249093529120549091506001600160a01b031680620013b457600080600085806020019051810190620011c3919062002d96565b925092509250600085848484604051620011dd9062002399565b620011eb9392919062002b60565b8190604051809103906000f59050801580156200120c573d6000803e3d6000fd5b506040516340c10f1960e01b81529091506001600160a01b038216906340c10f199062001240908c908c9060040162002a46565b600060405180830381600087803b1580156200125b57600080fd5b505af115801562001270573d6000803e3d6000fd5b50505050806024600088815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060405180604001604052808d63ffffffff1681526020018c6001600160a01b031681525060256000836001600160a01b03166001600160a01b0316815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a8154816001600160a01b0302191690836001600160a01b031602179055509050507fccd7715648d1f2bb13e158f96b5b6c3aeda555d4cb87112e274a6f28bc571d598c8c83604051620013a29392919063ffffffff9390931683526001600160a01b03918216602084015216604082015260600190565b60405180910390a15050505062001419565b6040516340c10f1960e01b81526001600160a01b038216906340c10f1990620013e4908890889060040162002a46565b600060405180830381600087803b158015620013ff57600080fd5b505af115801562001414573d6000803e3d6000fd5b505050505b50505b7f25308c93ceeed162da955b3f7ce3e3f93606579e40fb92029faa9efe2754598389878786866040516200145595949392919062002d5f565b60405180910390a150505050505050505050565b6000806200147a6101008462002cd3565b905060006200148c6101008562002e0b565b60009283526023602052604090922054600190921b9182169091149392505050565b6000808888604051602001620014c692919062002c67565b604051602081830303815290604052805190602001209050600060ff60f81b308360405180602001620014f99062002399565b601f1982820381018352601f90910116604081905262001526908d908d908d908d908d9060200162002e4b565b60408051601f198184030181529082905262001546929160200162002e8c565b604051602081830303815290604052805190602001206040516020016200159f94939291906001600160f81b031994909416845260609290921b6001600160601b03191660018401526015830152603582015260550190565b60408051808303601f1901815291905280516020909101209a9950505050505050505050565b60225460ff1615620015eb5760405162461bcd60e51b81526004016200055390620029de565b60225463ffffffff610100909104811690841603620016735760405162461bcd60e51b815260206004820152603f60248201527f506f6c79676f6e5a6b45564d4272696467653a3a6272696467654d657373616760448201527f653a2044657374696e6174696f6e2063616e6e6f7420626520697473656c6600606482015260840162000553565b7f501781209a1f8899323b96b4ef08b168df93e0a90c673d1e4cce39366cb62f9b6001602260019054906101000a900463ffffffff163386863487602154604051620016c798979695949392919062002b9d565b60405180910390a1620016fe620009506001602260019054906101000a900463ffffffff1633878734888051906020012062000c4f565b6026546001600160a01b03166333d6247d6200171962000a5b565b6040518263ffffffff1660e01b81526004016200173891815260200190565b600060405180830381600087803b1580156200175357600080fd5b505af115801562001768573d6000803e3d6000fd5b50505050505050565b6027546001600160a01b031633146200179e5760405162461bcd60e51b8152600401620005539062002c0a565b62000a06620020d7565b6000620017eb83838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506200218692505050565b9050632afa533160e01b6001600160e01b0319821601620019e05760008080808080806200181d896004818d62002ebf565b8101906200182c919062002eeb565b9650965096509650965096509650336001600160a01b0316876001600160a01b0316146200186e5760405162461bcd60e51b8152600401620005539062002f46565b6001600160a01b0386163014620018995760405162461bcd60e51b8152600401620005539062002fa3565b8a85146200190c5760405162461bcd60e51b815260206004820152603960248201527f506f6c79676f6e5a6b45564d4272696467653a3a5f7065726d69743a205065726044820152780dad2e840c2dadeeadce840c8decae640dcdee840dac2e8c6d603b1b606482015260840162000553565b604080516001600160a01b0389811660248301528881166044830152606482018890526084820187905260ff861660a483015260c4820185905260e48083018590528351808403909101815261010490920183526020820180516001600160e01b031663d505accf60e01b1790529151918e16916200198c919062002d41565b6000604051808303816000865af19150503d8060008114620019cb576040519150601f19603f3d011682016040523d82523d6000602084013e620019d0565b606091505b5050505050505050505062001bc5565b6001600160e01b031981166323f2ebc360e21b1462001a565760405162461bcd60e51b815260206004820152602b60248201527f506f6c79676f6e5a6b45564d4272696467653a3a5f7065726d69743a204e6f7460448201526a081d985b1a590818d85b1b60aa1b606482015260840162000553565b60008080808080808062001a6e8a6004818e62002ebf565b81019062001a7d919062003005565b97509750975097509750975097509750336001600160a01b0316886001600160a01b03161462001ac15760405162461bcd60e51b8152600401620005539062002f46565b6001600160a01b038716301462001aec5760405162461bcd60e51b8152600401620005539062002fa3565b604080516001600160a01b038a811660248301528981166044830152606482018990526084820188905286151560a483015260ff861660c483015260e482018590526101048083018590528351808403909101815261012490920183526020820180516001600160e01b03166323f2ebc360e21b1790529151918f169162001b75919062002d41565b6000604051808303816000865af19150503d806000811462001bb4576040519150601f19603f3d011682016040523d82523d6000602084013e62001bb9565b606091505b50505050505050505050505b5050505050565b6040516001600160a01b038085166024830152831660448201526064810182905262000fdb9085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526200218d565b80600162001c4a602060026200318e565b62001c5691906200319c565b6021541062001cbb5760405162461bcd60e51b815260206004820152602a60248201527f4465706f736974436f6e74726163743a5f6465706f7369743a204d65726b6c65604482015269081d1c995948199d5b1b60b21b606482015260840162000553565b60016021600082825462001cd09190620031b6565b909155505060215460005b602081101562001d7a578160011660010362001d1057826001826020811062001d085762001d0862002c91565b015550505050565b6001816020811062001d265762001d2662002c91565b0154604080516020810192909252810184905260600160405160208183030381529060405280519060200120925060028262001d63919062002cd3565b91508062001d718162002cea565b91505062001cdb565b5062001d85620031d1565b505050565b60225460ff161562001db05760405162461bcd60e51b81526004016200055390620029de565b6022805460ff191660011790556040517f2261efe5aef6fedc1fd1550b25facc9181745623049c7901287030b9ad1a549790600090a1565b62001df98a63ffffffff1662001469565b1562001e505760405162461bcd60e51b815260206004820152603060248201526000805160206200477983398151915260448201526f08105b1c9958591e4818db185a5b595960821b606482015260840162000553565b6026546040805160208082018d90528183018c9052825180830384018152606083019384905280519101206312bd9b1960e11b90925260648101919091526000916001600160a01b03169063257b3632906084016020604051808303816000875af115801562001ec4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001eea9190620031e7565b90508060000362001f4d5760405162461bcd60e51b81526020600482015260376024820152600080516020620047798339815191526044820152760811db1bd8985b115e1a5d149bdbdd081a5b9d985b1a59604a1b606482015260840162000553565b60225463ffffffff878116610100909204161462001fcf5760405162461bcd60e51b815260206004820152604360248201526000805160206200477983398151915260448201527f2044657374696e6174696f6e206e6574776f726b20646f6573206e6f74206d616064820152620e8c6d60eb1b608482015260a40162000553565b602254600090610100900463ffffffff1662001fed57508862001ff0565b50895b6200201b6200200c848b8b8b8b8b8b8051906020012062000c4f565b8e8e63ffffffff168462000b4e565b620009c05760405162461bcd60e51b81526020600482015260326024820152600080516020620047798339815191526044820152711024b73b30b634b21039b6ba10383937b7b360711b606482015260840162000553565b6000620020836101008362002cd3565b90506000620020956101008462002e0b565b6000928352602360205260409092208054600190931b9092179091555050565b62001d858363a9059cbb60e01b848460405160240162001c0192919062002a46565b60225460ff16620021515760405162461bcd60e51b815260206004820152603b60248201527f456d657267656e63794d616e616765723a3a6966456d657267656e637953746160448201527f74653a206f6e6c7920696620656d657267656e63792073746174650000000000606482015260840162000553565b6022805460ff191690556040517f1e5e34eea33501aecf2ebec9fe0e884a40804275ea7fe10b2ba084c8374308b390600090a1565b6020015190565b6000620021e4826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316620022669092919063ffffffff16565b80519091501562001d85578080602001905181019062002205919062003201565b62001d855760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840162000553565b606062000c47848460008585600080866001600160a01b0316858760405162002290919062002d41565b60006040518083038185875af1925050503d8060008114620022cf576040519150601f19603f3d011682016040523d82523d6000602084013e620022d4565b606091505b5091509150620022e787838387620022f2565b979650505050505050565b60608315620023665782516000036200235e576001600160a01b0385163b6200235e5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640162000553565b508162000c47565b62000c4783838151156200237d5781518083602001fd5b8060405162461bcd60e51b815260040162000553919062003221565b611542806200323783390190565b6001600160a01b0381168114620023bd57600080fd5b50565b8035620023cd81620023a7565b919050565b803563ffffffff81168114620023cd57600080fd5b60008083601f840112620023fa57600080fd5b5081356001600160401b038111156200241257600080fd5b6020830191508360208285010111156200242b57600080fd5b9250929050565b60008060008060008060a087890312156200244c57600080fd5b86356200245981620023a7565b95506200246960208801620023d2565b945060408701356200247b81620023a7565b93506060870135925060808701356001600160401b038111156200249e57600080fd5b620024ac89828a01620023e7565b979a9699509497509295939492505050565b60008060408385031215620024d257600080fd5b620024dd83620023d2565b91506020830135620024ef81620023a7565b809150509250929050565b6000602082840312156200250d57600080fd5b81356200251a81620023a7565b9392505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171562002562576200256262002521565b604052919050565b600082601f8301126200257c57600080fd5b813560206001600160401b038211156200259a576200259a62002521565b8160051b620025ab82820162002537565b9283528481018201928281019087851115620025c657600080fd5b83870192505b84831015620022e757823582529183019190830190620025cc565b60008060008060808587031215620025fe57600080fd5b8435935060208501356001600160401b03808211156200261d57600080fd5b6200262b888389016200256a565b94506040870135915080821682146200264357600080fd5b509396929550929360600135925050565b60ff81168114620023bd57600080fd5b600080600080600080600060e0888a0312156200268057600080fd5b87356200268d8162002654565b96506200269d60208901620023d2565b95506040880135620026af81620023a7565b9450620026bf60608901620023d2565b93506080880135620026d181620023a7565b9699959850939692959460a0840135945060c09093013592915050565b60006001600160401b038211156200270a576200270a62002521565b50601f01601f191660200190565b600082601f8301126200272a57600080fd5b8135620027416200273b82620026ee565b62002537565b8181528460208386010111156200275757600080fd5b816020850160208301376000918101602001919091529392505050565b6000806000806000806000806000806101408b8d0312156200279557600080fd5b8a356001600160401b0380821115620027ad57600080fd5b620027bb8e838f016200256a565b9b50620027cb60208e01620023d2565b9a5060408d0135995060608d01359850620027e960808e01620023d2565b9750620027f960a08e01620023c0565b96506200280960c08e01620023d2565b95506200281960e08e01620023c0565b94506101008d013593506101208d01359150808211156200283957600080fd5b50620028488d828e0162002718565b9150509295989b9194979a5092959850565b6000806000606084860312156200287057600080fd5b6200287b84620023d2565b925060208401356200288d81620023a7565b915060408401356200289f81620023a7565b809150509250925092565b600060208284031215620028bd57600080fd5b5035919050565b600080600080600080600060a0888a031215620028e057600080fd5b620028eb88620023d2565b96506020880135620028fd81620023a7565b955060408801356001600160401b03808211156200291a57600080fd5b620029288b838c01620023e7565b909750955060608a01359150808211156200294257600080fd5b50620029518a828b01620023e7565b9094509250506080880135620029678162002654565b8091505092959891949750929550565b6000806000606084860312156200298d57600080fd5b6200299884620023d2565b92506020840135620029aa81620023a7565b915060408401356001600160401b03811115620029c657600080fd5b620029d48682870162002718565b9150509250925092565b60208082526042908201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960408201527f53746174653a206f6e6c79206966206e6f7420656d657267656e637920737461606082015261746560f01b608082015260a00190565b6001600160a01b03929092168252602082015260400190565b60005b8381101562002a7c57818101518382015260200162002a62565b8381111562000fdb5750506000910152565b600082601f83011262002aa057600080fd5b815162002ab16200273b82620026ee565b81815284602083860101111562002ac757600080fd5b62000c4782602083016020870162002a5f565b60006020828403121562002aed57600080fd5b81516001600160401b0381111562002b0457600080fd5b62000c478482850162002a8e565b60006020828403121562002b2557600080fd5b81516200251a8162002654565b6000815180845262002b4c81602086016020860162002a5f565b601f01601f19169290920160200192915050565b60608152600062002b75606083018662002b32565b828103602084015262002b89818662002b32565b91505060ff83166040830152949350505050565b60ff8916815263ffffffff88811660208301526001600160a01b03888116604084015287821660608401528616608083015260a0820185905261010060c0830181905260009162002bf18483018762002b32565b925080851660e085015250509998505050505050505050565b6020808252603a908201527f506f6c79676f6e5a6b45564d3a3a6f6e6c79506f6c79676f6e5a6b45564d3a2060408201527f6f6e6c7920506f6c79676f6e5a6b45564d20636f6e7472616374000000000000606082015260800190565b60e09290921b6001600160e01b031916825260601b6001600160601b031916600482015260180190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60008262002ce55762002ce562002ca7565b500490565b60006001820162002cff5762002cff62002cbd565b5060010190565b6001600160a01b038416815263ffffffff8316602082015260606040820181905260009062002d389083018462002b32565b95945050505050565b6000825162002d5581846020870162002a5f565b9190910192915050565b63ffffffff95861681529390941660208401526001600160a01b039182166040840152166060820152608081019190915260a00190565b60008060006060848603121562002dac57600080fd5b83516001600160401b038082111562002dc457600080fd5b62002dd28783880162002a8e565b9450602086015191508082111562002de957600080fd5b5062002df88682870162002a8e565b92505060408401516200289f8162002654565b60008262002e1d5762002e1d62002ca7565b500690565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60608152600062002e6160608301878962002e22565b828103602084015262002e7681868862002e22565b91505060ff831660408301529695505050505050565b6000835162002ea081846020880162002a5f565b83519083019062002eb681836020880162002a5f565b01949350505050565b6000808585111562002ed057600080fd5b8386111562002ede57600080fd5b5050820193919092039150565b600080600080600080600060e0888a03121562002f0757600080fd5b873562002f1481620023a7565b9650602088013562002f2681620023a7565b955060408801359450606088013593506080880135620026d18162002654565b6020808252603c908201527f506f6c79676f6e5a6b45564d4272696467653a3a5f7065726d69743a2050657260408201527f6d6974206f776e6572206d757374206265207468652073656e64657200000000606082015260800190565b60208082526033908201527f506f6c79676f6e5a6b45564d4272696467653a3a5f7065726d69743a205370656040820152726e646572206d7573742062652027746869732760681b606082015260800190565b8015158114620023bd57600080fd5b600080600080600080600080610100898b0312156200302357600080fd5b88356200303081620023a7565b975060208901356200304281620023a7565b965060408901359550606089013594506080890135620030628162002ff6565b935060a0890135620030748162002654565b979a969950949793969295929450505060c08201359160e0013590565b600181815b80851115620030d2578160001904821115620030b657620030b662002cbd565b80851615620030c457918102915b93841c939080029062003096565b509250929050565b600082620030eb5750600162000a55565b81620030fa5750600062000a55565b81600181146200311357600281146200311e576200313e565b600191505062000a55565b60ff84111562003132576200313262002cbd565b50506001821b62000a55565b5060208310610133831016604e8410600b841016171562003163575081810a62000a55565b6200316f838362003091565b806000190482111562003186576200318662002cbd565b029392505050565b60006200251a8383620030da565b600082821015620031b157620031b162002cbd565b500390565b60008219821115620031cc57620031cc62002cbd565b500190565b634e487b7160e01b600052600160045260246000fd5b600060208284031215620031fa57600080fd5b5051919050565b6000602082840312156200321457600080fd5b81516200251a8162002ff6565b6020815260006200251a602083018462002b3256fe60c06040523480156200001157600080fd5b5060405162001542380380620015428339810160408190526200003491620002ad565b82826003620000448382620003c1565b506004620000538282620003c1565b5050600580546001600160a81b0319163360ff60a01b191617600160a01b60ff851602179055504660808190526200008b9062000098565b60a052506200048d915050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f620000c562000146565b805160209182012060408051808201825260018152603160f81b90840152805192830193909352918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060820152608081018390523060a082015260c001604051602081830303815290604052805190602001209050919050565b606060038054620001579062000332565b80601f0160208091040260200160405190810160405280929190818152602001828054620001859062000332565b8015620001d65780601f10620001aa57610100808354040283529160200191620001d6565b820191906000526020600020905b815481529060010190602001808311620001b857829003601f168201915b5050505050905090565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200020857600080fd5b81516001600160401b0380821115620002255762000225620001e0565b604051601f8301601f19908116603f01168101908282118183101715620002505762000250620001e0565b816040528381526020925086838588010111156200026d57600080fd5b600091505b8382101562000291578582018301518183018401529082019062000272565b83821115620002a35760008385830101525b9695505050505050565b600080600060608486031215620002c357600080fd5b83516001600160401b0380821115620002db57600080fd5b620002e987838801620001f6565b945060208601519150808211156200030057600080fd5b506200030f86828701620001f6565b925050604084015160ff811681146200032757600080fd5b809150509250925092565b600181811c908216806200034757607f821691505b6020821081036200036857634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620003bc57600081815260208120601f850160051c81016020861015620003975750805b601f850160051c820191505b81811015620003b857828155600101620003a3565b5050505b505050565b81516001600160401b03811115620003dd57620003dd620001e0565b620003f581620003ee845462000332565b846200036e565b602080601f8311600181146200042d5760008415620004145750858301515b600019600386901b1c1916600185901b178555620003b8565b600085815260208120601f198616915b828110156200045e578886015182559484019460019091019084016200043d565b50858210156200047d5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60805160a051611088620004ba60003960006104690152600081816102f9015261043301526110886000f3fe608060405234801561001057600080fd5b50600436106101375760003560e01c806370a08231116100b8578063a457c2d71161007c578063a457c2d7146102ce578063a9059cbb146102e1578063cd0d0096146102f4578063d505accf1461031b578063dd62ed3e1461032e578063ffa1ad741461034157600080fd5b806370a082311461023f5780637ecebe001461026857806395d89b41146102885780639dc29fac14610290578063a3c573eb146102a357600080fd5b806330adf81f116100ff57806330adf81f146101c9578063313ce567146101f05780633644e5151461020f578063395093511461021757806340c10f191461022a57600080fd5b806306fdde031461013c578063095ea7b31461015a57806318160ddd1461017d57806320606b701461018f57806323b872dd146101b6575b600080fd5b610144610361565b6040516101519190610dc2565b60405180910390f35b61016d610168366004610e33565b6103f3565b6040519015158152602001610151565b6002545b604051908152602001610151565b6101817f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81565b61016d6101c4366004610e5d565b61040b565b6101817f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b600554600160a01b900460ff1660405160ff9091168152602001610151565b61018161042f565b61016d610225366004610e33565b61048b565b61023d610238366004610e33565b6104ad565b005b61018161024d366004610e99565b6001600160a01b031660009081526020819052604090205490565b610181610276366004610e99565b60066020526000908152604090205481565b6101446104ee565b61023d61029e366004610e33565b6104fd565b6005546102b6906001600160a01b031681565b6040516001600160a01b039091168152602001610151565b61016d6102dc366004610e33565b610531565b61016d6102ef366004610e33565b6105ac565b6101817f000000000000000000000000000000000000000000000000000000000000000081565b61023d610329366004610ebb565b6105ba565b61018161033c366004610f2e565b6107f5565b610144604051806040016040528060018152602001603160f81b81525081565b60606003805461037090610f61565b80601f016020809104026020016040519081016040528092919081815260200182805461039c90610f61565b80156103e95780601f106103be576101008083540402835291602001916103e9565b820191906000526020600020905b8154815290600101906020018083116103cc57829003601f168201915b5050505050905090565b600033610401818585610820565b5060019392505050565b600033610419858285610945565b6104248585856109bf565b506001949350505050565b60007f000000000000000000000000000000000000000000000000000000000000000046146104665761046146610b51565b905090565b507f000000000000000000000000000000000000000000000000000000000000000090565b60003361040181858561049e83836107f5565b6104a89190610fb1565b610820565b6005546001600160a01b031633146104e05760405162461bcd60e51b81526004016104d790610fc9565b60405180910390fd5b6104ea8282610bfd565b5050565b60606004805461037090610f61565b6005546001600160a01b031633146105275760405162461bcd60e51b81526004016104d790610fc9565b6104ea8282610caa565b6000338161053f82866107f5565b90508381101561059f5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016104d7565b6104248286868403610820565b6000336104018185856109bf565b834211156106165760405162461bcd60e51b8152602060048201526024808201527f546f6b656e577261707065643a3a7065726d69743a20457870697265642070656044820152631c9b5a5d60e21b60648201526084016104d7565b6001600160a01b038716600090815260066020526040812080547f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918a918a918a91908661066383611019565b909155506040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e00160405160208183030381529060405280519060200120905060006106c161042f565b60405161190160f01b602082015260228101919091526042810183905260620160408051601f198184030181528282528051602091820120600080855291840180845281905260ff89169284019290925260608301879052608083018690529092509060019060a0016020604051602081039080840390855afa15801561074c573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116158015906107825750896001600160a01b0316816001600160a01b0316145b6107de5760405162461bcd60e51b815260206004820152602760248201527f546f6b656e577261707065643a3a7065726d69743a20496e76616c6964207369604482015266676e617475726560c81b60648201526084016104d7565b6107e98a8a8a610820565b50505050505050505050565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166108825760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016104d7565b6001600160a01b0382166108e35760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016104d7565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b600061095184846107f5565b905060001981146109b957818110156109ac5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016104d7565b6109b98484848403610820565b50505050565b6001600160a01b038316610a235760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016104d7565b6001600160a01b038216610a855760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016104d7565b6001600160a01b03831660009081526020819052604090205481811015610afd5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016104d7565b6001600160a01b0384811660008181526020818152604080832087870390559387168083529184902080548701905592518581529092600080516020611033833981519152910160405180910390a36109b9565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f610b7c610361565b805160209182012060408051808201825260018152603160f81b90840152805192830193909352918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060820152608081018390523060a082015260c001604051602081830303815290604052805190602001209050919050565b6001600160a01b038216610c535760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016104d7565b8060026000828254610c659190610fb1565b90915550506001600160a01b03821660008181526020818152604080832080548601905551848152600080516020611033833981519152910160405180910390a35050565b6001600160a01b038216610d0a5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016104d7565b6001600160a01b03821660009081526020819052604090205481811015610d7e5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016104d7565b6001600160a01b0383166000818152602081815260408083208686039055600280548790039055518581529192916000805160206110338339815191529101610938565b600060208083528351808285015260005b81811015610def57858101830151858201604001528201610dd3565b81811115610e01576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b0381168114610e2e57600080fd5b919050565b60008060408385031215610e4657600080fd5b610e4f83610e17565b946020939093013593505050565b600080600060608486031215610e7257600080fd5b610e7b84610e17565b9250610e8960208501610e17565b9150604084013590509250925092565b600060208284031215610eab57600080fd5b610eb482610e17565b9392505050565b600080600080600080600060e0888a031215610ed657600080fd5b610edf88610e17565b9650610eed60208901610e17565b95506040880135945060608801359350608088013560ff81168114610f1157600080fd5b9699959850939692959460a0840135945060c09093013592915050565b60008060408385031215610f4157600080fd5b610f4a83610e17565b9150610f5860208401610e17565b90509250929050565b600181811c90821680610f7557607f821691505b602082108103610f9557634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60008219821115610fc457610fc4610f9b565b500190565b60208082526030908201527f546f6b656e577261707065643a3a6f6e6c794272696467653a204e6f7420506f60408201526f6c79676f6e5a6b45564d42726964676560801b606082015260800190565b60006001820161102b5761102b610f9b565b506001019056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212208b7986f78e961ad6c0885b86b24ce427045be98073c1f3d7fe18180542ab873564736f6c634300080f0033506f6c79676f6e5a6b45564d4272696467653a3a5f7665726966794c6561663aa26469706673582212207321963add10aa42fbf70097691018c23164a96132c6cd71e46023fffa7d461764736f6c634300080f0033", "storage": { "0x0000000000000000000000000000000000000000000000000000000000000000": "0x01", "0x0000000000000000000000000000000000000000000000000000000000000022": "0x0100", @@ -23,11 +23,16 @@ "balance": "0", "nonce": "1", "address": "0xae4bb80be56b819606589de61d5ec3b522eeb032", - "bytecode": "0x608060405234801561001057600080fd5b506004361061004c5760003560e01c806301fd904414610051578063257b36321461006d57806333d6247d1461008d578063a3c573eb146100a2575b600080fd5b61005a60015481565b6040519081526020015b60405180910390f35b61005a61007b366004610164565b60006020819052908152604090205481565b6100a061009b366004610164565b6100cd565b005b6002546100b5906001600160a01b031681565b6040516001600160a01b039091168152602001610064565b6002546001600160a01b0316331461015f5760405162461bcd60e51b815260206004820152604560248201527f506f6c79676f6e5a6b45564d476c6f62616c45786974526f6f744c323a3a757060448201527f6461746545786974526f6f743a204f6e6c7920506f6c79676f6e5a6b45564d42606482015264726964676560d81b608482015260a40160405180910390fd5b600155565b60006020828403121561017657600080fd5b503591905056fea26469706673582212203d6a7f66369fc06c0d8b9ca38eabcd1a1bdd000df9e10846e604066a7c3c182f64736f6c634300080f0033", + "bytecode": "0x608060405234801561001057600080fd5b506004361061004c5760003560e01c806301fd904414610051578063257b36321461006d57806333d6247d1461008d578063a3c573eb146100a2575b600080fd5b61005a60015481565b6040519081526020015b60405180910390f35b61005a61007b366004610164565b60006020819052908152604090205481565b6100a061009b366004610164565b6100cd565b005b6002546100b5906001600160a01b031681565b6040516001600160a01b039091168152602001610064565b6002546001600160a01b0316331461015f5760405162461bcd60e51b815260206004820152604560248201527f506f6c79676f6e5a6b45564d476c6f62616c45786974526f6f744c323a3a757060448201527f6461746545786974526f6f743a204f6e6c7920506f6c79676f6e5a6b45564d42606482015264726964676560d81b608482015260a40160405180910390fd5b600155565b60006020828403121561017657600080fd5b503591905056fea2646970667358221220515fd6c3d86946bd7f5a4ef86115f8c7ba072b8c318ac2c46e1526fb50a66c3364736f6c634300080f0033", "storage": { "0x0000000000000000000000000000000000000000000000000000000000000002": "0x9d98deabc42dd696deb9e40b4f1cab7ddbf55988" }, "contractName": "PolygonZkEVMGlobalExitRootL2" } + ], + "rawTxs": [ + "0xf902718080839896808080b90266608060405234801561001057600080fd5b5060405161024638038061024683398101604081905261002f91610054565b600280546001600160a01b0319166001600160a01b0392909216919091179055610084565b60006020828403121561006657600080fd5b81516001600160a01b038116811461007d57600080fd5b9392505050565b6101b3806100936000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806301fd904414610051578063257b36321461006d57806333d6247d1461008d578063a3c573eb146100a2575b600080fd5b61005a60015481565b6040519081526020015b60405180910390f35b61005a61007b366004610164565b60006020819052908152604090205481565b6100a061009b366004610164565b6100cd565b005b6002546100b5906001600160a01b031681565b6040516001600160a01b039091168152602001610064565b6002546001600160a01b0316331461015f5760405162461bcd60e51b815260206004820152604560248201527f506f6c79676f6e5a6b45564d476c6f62616c45786974526f6f744c323a3a757060448201527f6461746545786974526f6f743a204f6e6c7920506f6c79676f6e5a6b45564d42606482015264726964676560d81b608482015260a40160405180910390fd5b600155565b60006020828403121561017657600080fd5b503591905056fea2646970667358221220515fd6c3d86946bd7f5a4ef86115f8c7ba072b8c318ac2c46e1526fb50a66c3364736f6c634300080f00330000000000000000000000009d98deabc42dd696deb9e40b4f1cab7ddbf55988f663a6219e004881e2f9d8adc4a1c8ac43cc053b91f9acf9a2849820a7ec88f35fdb6556717d08499ee9b4883e00cefd279df4b4217e1b4e97a6998c5d4fdf3e1c", + "0xf947f90180839896808080b947ee608060405234801561001057600080fd5b506147ce806100206000396000f3fe608060405260043610620001675760003560e01c80637b6323c111620000c5578063d02103ca1162000078578063d02103ca146200047d578063d96a15f7146200049f578063dbc1697614620004b6578063ed6be5c914620004ce578063ee25560b14620004e5578063ff634ed7146200051657600080fd5b80637b6323c1146200037057806381b1c17414620003955780639e34070f14620003cf578063a08e8a0814620003f4578063aaa13cc2146200041e578063bab161bf146200044357600080fd5b806334ac9cf2116200011e57806334ac9cf214620002a25780633ae0504714620002c45780633da8168214620002dc5780633e1970431462000301578063463855491462000326578063647c576c146200034b57600080fd5b80630871e971146200016c57806315064c9614620001855780632072f6c514620001b657806322e95f2c14620001ce5780632dfdf0b5146200020c578063318aee3d1462000233575b600080fd5b620001836200017d36600462002432565b6200052d565b005b3480156200019257600080fd5b50602254620001a19060ff1681565b60405190151581526020015b60405180910390f35b348015620001c357600080fd5b5062000183620009cf565b348015620001db57600080fd5b50620001f3620001ed366004620024be565b62000a08565b6040516001600160a01b039091168152602001620001ad565b3480156200021957600080fd5b506200022460215481565b604051908152602001620001ad565b3480156200024057600080fd5b506200027d62000252366004620024fa565b60256020526000908152604090205463ffffffff81169064010000000090046001600160a01b031682565b6040805163ffffffff90931683526001600160a01b03909116602083015201620001ad565b348015620002af57600080fd5b50602754620001f3906001600160a01b031681565b348015620002d157600080fd5b506200022462000a5b565b348015620002e957600080fd5b50620001a1620002fb366004620025e7565b62000b4e565b3480156200030e57600080fd5b50620002246200032036600462002664565b62000c4f565b3480156200033357600080fd5b50620001836200034536600462002774565b62000cdc565b3480156200035857600080fd5b50620001836200036a3660046200285a565b62000e82565b3480156200037d57600080fd5b50620001836200038f36600462002774565b62000fe1565b348015620003a257600080fd5b50620001f3620003b4366004620028aa565b6024602052600090815260409020546001600160a01b031681565b348015620003dc57600080fd5b50620001a1620003ee366004620028aa565b62001469565b3480156200040157600080fd5b506200040b600081565b60405160ff9091168152602001620001ad565b3480156200042b57600080fd5b50620001f36200043d366004620028c4565b620014ae565b3480156200045057600080fd5b506022546200046790610100900463ffffffff1681565b60405163ffffffff9091168152602001620001ad565b3480156200048a57600080fd5b50602654620001f3906001600160a01b031681565b62000183620004b036600462002977565b620015c5565b348015620004c357600080fd5b506200018362001771565b348015620004db57600080fd5b5062000467600081565b348015620004f257600080fd5b506200022462000504366004620028aa565b60236020526000908152604090205481565b3480156200052357600080fd5b506200040b600181565b60225460ff16156200055c5760405162461bcd60e51b81526004016200055390620029de565b60405180910390fd5b60225463ffffffff610100909104811690861603620005e45760405162461bcd60e51b815260206004820152603d60248201527f506f6c79676f6e5a6b45564d4272696467653a3a62726964676541737365743a60448201527f2044657374696e6174696f6e2063616e6e6f7420626520697473656c66000000606482015260840162000553565b60008060606001600160a01b03891662000687578534146200067d5760405162461bcd60e51b8152602060048201526044602482018190527f506f6c79676f6e5a6b45564d4272696467653a3a62726964676541737365743a908201527f20416d6f756e7420646f6573206e6f74206d61746368206d6573736167652e76606482015263616c756560e01b608482015260a40162000553565b60009150620008e9565b6001600160a01b03808a1660009081526025602090815260409182902082518084019093525463ffffffff81168352640100000000900490921691810182905290156200074657604051632770a7eb60e21b81526001600160a01b038b1690639dc29fac90620006fe9033908b9060040162002a46565b600060405180830381600087803b1580156200071957600080fd5b505af11580156200072e573d6000803e3d6000fd5b505050508060200151935080600001519250620008e7565b84156200075b576200075b8a888888620017a8565b620007726001600160a01b038b1633308a62001bcc565b899350602260019054906101000a900463ffffffff169250896001600160a01b03166306fdde036040518163ffffffff1660e01b8152600401600060405180830381865afa158015620007c9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620007f3919081019062002ada565b8a6001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa15801562000832573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200085c919081019062002ada565b8b6001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200089b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620008c1919062002b12565b604051602001620008d59392919062002b60565b60405160208183030381529060405291505b505b7f501781209a1f8899323b96b4ef08b168df93e0a90c673d1e4cce39366cb62f9b600083858b8b8b876021546040516200092b98979695949392919062002b9d565b60405180910390a16200095662000950600084868c8c8c888051906020012062000c4f565b62001c39565b6026546001600160a01b03166333d6247d6200097162000a5b565b6040518263ffffffff1660e01b81526004016200099091815260200190565b600060405180830381600087803b158015620009ab57600080fd5b505af1158015620009c0573d6000803e3d6000fd5b50505050505050505050505050565b6027546001600160a01b03163314620009fc5760405162461bcd60e51b8152600401620005539062002c0a565b62000a0662001d8a565b565b600060246000848460405160200162000a2392919062002c67565b60408051601f19818403018152918152815160209283012083529082019290925201600020546001600160a01b031690505b92915050565b602154600090819081805b602081101562000b45578260011660010362000ac6576001816020811062000a925762000a9262002c91565b0154604080516020810192909252810185905260600160405160208183030381529060405280519060200120935062000af3565b60408051602081018690529081018390526060016040516020818303038152906040528051906020012093505b62000b0060028462002cd3565b6040805160208101859052908101849052909350606001604051602081830303815290604052805190602001209150808062000b3c9062002cea565b91505062000a66565b50919392505050565b6000846001600160401b038416825b602081101562000c40578160011660010362000bca5786818151811062000b885762000b8862002c91565b60200260200101518360405160200162000bac929190918252602082015260400190565b60405160208183030381529060405280519060200120925062000c1c565b8287828151811062000be05762000be062002c91565b602002602001015160405160200162000c03929190918252602082015260400190565b6040516020818303038152906040528051906020012092505b62000c2960028362002cd3565b91508062000c378162002cea565b91505062000b5d565b5050821490505b949350505050565b6040516001600160f81b031960f889901b1660208201526001600160e01b031960e088811b821660218401526001600160601b0319606089811b821660258601529188901b909216603984015285901b16603d8201526051810183905260718101829052600090609101604051602081830303815290604052805190602001209050979650505050505050565b60225460ff161562000d025760405162461bcd60e51b81526004016200055390620029de565b62000d188a8a8a8a8a8a8a8a8a8a600162001de8565b62000d298963ffffffff1662002073565b6000836001600160a01b03168387898560405160240162000d4d9392919062002d06565b60408051601f198184030181529181526020820180516001600160e01b0316630c035af960e11b1790525162000d84919062002d41565b60006040518083038185875af1925050503d806000811462000dc3576040519150601f19603f3d011682016040523d82523d6000602084013e62000dc8565b606091505b505090508062000e345760405162461bcd60e51b815260206004820152603060248201527f506f6c79676f6e5a6b45564d4272696467653a3a636c61696d4d65737361676560448201526f0e8813595cdcd859d94819985a5b195960821b606482015260840162000553565b7f25308c93ceeed162da955b3f7ce3e3f93606579e40fb92029faa9efe275459838a8888878760405162000e6d95949392919062002d5f565b60405180910390a15050505050505050505050565b600054610100900460ff161580801562000ea35750600054600160ff909116105b8062000ebf5750303b15801562000ebf575060005460ff166001145b62000f245760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840162000553565b6000805460ff19166001179055801562000f48576000805461ff0019166101001790555b6022805463ffffffff86166101000264ffffffff0019909116179055602680546001600160a01b038086166001600160a01b0319928316179092556027805492851692909116919091179055801562000fdb576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b60225460ff1615620010075760405162461bcd60e51b81526004016200055390620029de565b6200101d8a8a8a8a8a8a8a8a8a8a600062001de8565b6200102e8963ffffffff1662002073565b6001600160a01b0385166200112557604080516000808252602082019092526001600160a01b03851690849060405162001069919062002d41565b60006040518083038185875af1925050503d8060008114620010a8576040519150601f19603f3d011682016040523d82523d6000602084013e620010ad565b606091505b50509050806200111e5760405162461bcd60e51b815260206004820152603560248201527f506f6c79676f6e5a6b45564d4272696467653a3a636c61696d41737365743a20604482015274115d1a195c881d1c985b9cd9995c8819985a5b1959605a1b606482015260840162000553565b506200141c565b60225463ffffffff6101009091048116908716036200115a57620011546001600160a01b0386168484620020b5565b6200141c565b600086866040516020016200117192919062002c67565b60408051601f198184030181529181528151602092830120600081815260249093529120549091506001600160a01b031680620013b457600080600085806020019051810190620011c3919062002d96565b925092509250600085848484604051620011dd9062002399565b620011eb9392919062002b60565b8190604051809103906000f59050801580156200120c573d6000803e3d6000fd5b506040516340c10f1960e01b81529091506001600160a01b038216906340c10f199062001240908c908c9060040162002a46565b600060405180830381600087803b1580156200125b57600080fd5b505af115801562001270573d6000803e3d6000fd5b50505050806024600088815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060405180604001604052808d63ffffffff1681526020018c6001600160a01b031681525060256000836001600160a01b03166001600160a01b0316815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a8154816001600160a01b0302191690836001600160a01b031602179055509050507fccd7715648d1f2bb13e158f96b5b6c3aeda555d4cb87112e274a6f28bc571d598c8c83604051620013a29392919063ffffffff9390931683526001600160a01b03918216602084015216604082015260600190565b60405180910390a15050505062001419565b6040516340c10f1960e01b81526001600160a01b038216906340c10f1990620013e4908890889060040162002a46565b600060405180830381600087803b158015620013ff57600080fd5b505af115801562001414573d6000803e3d6000fd5b505050505b50505b7f25308c93ceeed162da955b3f7ce3e3f93606579e40fb92029faa9efe2754598389878786866040516200145595949392919062002d5f565b60405180910390a150505050505050505050565b6000806200147a6101008462002cd3565b905060006200148c6101008562002e0b565b60009283526023602052604090922054600190921b9182169091149392505050565b6000808888604051602001620014c692919062002c67565b604051602081830303815290604052805190602001209050600060ff60f81b308360405180602001620014f99062002399565b601f1982820381018352601f90910116604081905262001526908d908d908d908d908d9060200162002e4b565b60408051601f198184030181529082905262001546929160200162002e8c565b604051602081830303815290604052805190602001206040516020016200159f94939291906001600160f81b031994909416845260609290921b6001600160601b03191660018401526015830152603582015260550190565b60408051808303601f1901815291905280516020909101209a9950505050505050505050565b60225460ff1615620015eb5760405162461bcd60e51b81526004016200055390620029de565b60225463ffffffff610100909104811690841603620016735760405162461bcd60e51b815260206004820152603f60248201527f506f6c79676f6e5a6b45564d4272696467653a3a6272696467654d657373616760448201527f653a2044657374696e6174696f6e2063616e6e6f7420626520697473656c6600606482015260840162000553565b7f501781209a1f8899323b96b4ef08b168df93e0a90c673d1e4cce39366cb62f9b6001602260019054906101000a900463ffffffff163386863487602154604051620016c798979695949392919062002b9d565b60405180910390a1620016fe620009506001602260019054906101000a900463ffffffff1633878734888051906020012062000c4f565b6026546001600160a01b03166333d6247d6200171962000a5b565b6040518263ffffffff1660e01b81526004016200173891815260200190565b600060405180830381600087803b1580156200175357600080fd5b505af115801562001768573d6000803e3d6000fd5b50505050505050565b6027546001600160a01b031633146200179e5760405162461bcd60e51b8152600401620005539062002c0a565b62000a06620020d7565b6000620017eb83838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506200218692505050565b9050632afa533160e01b6001600160e01b0319821601620019e05760008080808080806200181d896004818d62002ebf565b8101906200182c919062002eeb565b9650965096509650965096509650336001600160a01b0316876001600160a01b0316146200186e5760405162461bcd60e51b8152600401620005539062002f46565b6001600160a01b0386163014620018995760405162461bcd60e51b8152600401620005539062002fa3565b8a85146200190c5760405162461bcd60e51b815260206004820152603960248201527f506f6c79676f6e5a6b45564d4272696467653a3a5f7065726d69743a205065726044820152780dad2e840c2dadeeadce840c8decae640dcdee840dac2e8c6d603b1b606482015260840162000553565b604080516001600160a01b0389811660248301528881166044830152606482018890526084820187905260ff861660a483015260c4820185905260e48083018590528351808403909101815261010490920183526020820180516001600160e01b031663d505accf60e01b1790529151918e16916200198c919062002d41565b6000604051808303816000865af19150503d8060008114620019cb576040519150601f19603f3d011682016040523d82523d6000602084013e620019d0565b606091505b5050505050505050505062001bc5565b6001600160e01b031981166323f2ebc360e21b1462001a565760405162461bcd60e51b815260206004820152602b60248201527f506f6c79676f6e5a6b45564d4272696467653a3a5f7065726d69743a204e6f7460448201526a081d985b1a590818d85b1b60aa1b606482015260840162000553565b60008080808080808062001a6e8a6004818e62002ebf565b81019062001a7d919062003005565b97509750975097509750975097509750336001600160a01b0316886001600160a01b03161462001ac15760405162461bcd60e51b8152600401620005539062002f46565b6001600160a01b038716301462001aec5760405162461bcd60e51b8152600401620005539062002fa3565b604080516001600160a01b038a811660248301528981166044830152606482018990526084820188905286151560a483015260ff861660c483015260e482018590526101048083018590528351808403909101815261012490920183526020820180516001600160e01b03166323f2ebc360e21b1790529151918f169162001b75919062002d41565b6000604051808303816000865af19150503d806000811462001bb4576040519150601f19603f3d011682016040523d82523d6000602084013e62001bb9565b606091505b50505050505050505050505b5050505050565b6040516001600160a01b038085166024830152831660448201526064810182905262000fdb9085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526200218d565b80600162001c4a602060026200318e565b62001c5691906200319c565b6021541062001cbb5760405162461bcd60e51b815260206004820152602a60248201527f4465706f736974436f6e74726163743a5f6465706f7369743a204d65726b6c65604482015269081d1c995948199d5b1b60b21b606482015260840162000553565b60016021600082825462001cd09190620031b6565b909155505060215460005b602081101562001d7a578160011660010362001d1057826001826020811062001d085762001d0862002c91565b015550505050565b6001816020811062001d265762001d2662002c91565b0154604080516020810192909252810184905260600160405160208183030381529060405280519060200120925060028262001d63919062002cd3565b91508062001d718162002cea565b91505062001cdb565b5062001d85620031d1565b505050565b60225460ff161562001db05760405162461bcd60e51b81526004016200055390620029de565b6022805460ff191660011790556040517f2261efe5aef6fedc1fd1550b25facc9181745623049c7901287030b9ad1a549790600090a1565b62001df98a63ffffffff1662001469565b1562001e505760405162461bcd60e51b815260206004820152603060248201526000805160206200477983398151915260448201526f08105b1c9958591e4818db185a5b595960821b606482015260840162000553565b6026546040805160208082018d90528183018c9052825180830384018152606083019384905280519101206312bd9b1960e11b90925260648101919091526000916001600160a01b03169063257b3632906084016020604051808303816000875af115801562001ec4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001eea9190620031e7565b90508060000362001f4d5760405162461bcd60e51b81526020600482015260376024820152600080516020620047798339815191526044820152760811db1bd8985b115e1a5d149bdbdd081a5b9d985b1a59604a1b606482015260840162000553565b60225463ffffffff878116610100909204161462001fcf5760405162461bcd60e51b815260206004820152604360248201526000805160206200477983398151915260448201527f2044657374696e6174696f6e206e6574776f726b20646f6573206e6f74206d616064820152620e8c6d60eb1b608482015260a40162000553565b602254600090610100900463ffffffff1662001fed57508862001ff0565b50895b6200201b6200200c848b8b8b8b8b8b8051906020012062000c4f565b8e8e63ffffffff168462000b4e565b620009c05760405162461bcd60e51b81526020600482015260326024820152600080516020620047798339815191526044820152711024b73b30b634b21039b6ba10383937b7b360711b606482015260840162000553565b6000620020836101008362002cd3565b90506000620020956101008462002e0b565b6000928352602360205260409092208054600190931b9092179091555050565b62001d858363a9059cbb60e01b848460405160240162001c0192919062002a46565b60225460ff16620021515760405162461bcd60e51b815260206004820152603b60248201527f456d657267656e63794d616e616765723a3a6966456d657267656e637953746160448201527f74653a206f6e6c7920696620656d657267656e63792073746174650000000000606482015260840162000553565b6022805460ff191690556040517f1e5e34eea33501aecf2ebec9fe0e884a40804275ea7fe10b2ba084c8374308b390600090a1565b6020015190565b6000620021e4826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316620022669092919063ffffffff16565b80519091501562001d85578080602001905181019062002205919062003201565b62001d855760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840162000553565b606062000c47848460008585600080866001600160a01b0316858760405162002290919062002d41565b60006040518083038185875af1925050503d8060008114620022cf576040519150601f19603f3d011682016040523d82523d6000602084013e620022d4565b606091505b5091509150620022e787838387620022f2565b979650505050505050565b60608315620023665782516000036200235e576001600160a01b0385163b6200235e5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640162000553565b508162000c47565b62000c4783838151156200237d5781518083602001fd5b8060405162461bcd60e51b815260040162000553919062003221565b611542806200323783390190565b6001600160a01b0381168114620023bd57600080fd5b50565b8035620023cd81620023a7565b919050565b803563ffffffff81168114620023cd57600080fd5b60008083601f840112620023fa57600080fd5b5081356001600160401b038111156200241257600080fd5b6020830191508360208285010111156200242b57600080fd5b9250929050565b60008060008060008060a087890312156200244c57600080fd5b86356200245981620023a7565b95506200246960208801620023d2565b945060408701356200247b81620023a7565b93506060870135925060808701356001600160401b038111156200249e57600080fd5b620024ac89828a01620023e7565b979a9699509497509295939492505050565b60008060408385031215620024d257600080fd5b620024dd83620023d2565b91506020830135620024ef81620023a7565b809150509250929050565b6000602082840312156200250d57600080fd5b81356200251a81620023a7565b9392505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171562002562576200256262002521565b604052919050565b600082601f8301126200257c57600080fd5b813560206001600160401b038211156200259a576200259a62002521565b8160051b620025ab82820162002537565b9283528481018201928281019087851115620025c657600080fd5b83870192505b84831015620022e757823582529183019190830190620025cc565b60008060008060808587031215620025fe57600080fd5b8435935060208501356001600160401b03808211156200261d57600080fd5b6200262b888389016200256a565b94506040870135915080821682146200264357600080fd5b509396929550929360600135925050565b60ff81168114620023bd57600080fd5b600080600080600080600060e0888a0312156200268057600080fd5b87356200268d8162002654565b96506200269d60208901620023d2565b95506040880135620026af81620023a7565b9450620026bf60608901620023d2565b93506080880135620026d181620023a7565b9699959850939692959460a0840135945060c09093013592915050565b60006001600160401b038211156200270a576200270a62002521565b50601f01601f191660200190565b600082601f8301126200272a57600080fd5b8135620027416200273b82620026ee565b62002537565b8181528460208386010111156200275757600080fd5b816020850160208301376000918101602001919091529392505050565b6000806000806000806000806000806101408b8d0312156200279557600080fd5b8a356001600160401b0380821115620027ad57600080fd5b620027bb8e838f016200256a565b9b50620027cb60208e01620023d2565b9a5060408d0135995060608d01359850620027e960808e01620023d2565b9750620027f960a08e01620023c0565b96506200280960c08e01620023d2565b95506200281960e08e01620023c0565b94506101008d013593506101208d01359150808211156200283957600080fd5b50620028488d828e0162002718565b9150509295989b9194979a5092959850565b6000806000606084860312156200287057600080fd5b6200287b84620023d2565b925060208401356200288d81620023a7565b915060408401356200289f81620023a7565b809150509250925092565b600060208284031215620028bd57600080fd5b5035919050565b600080600080600080600060a0888a031215620028e057600080fd5b620028eb88620023d2565b96506020880135620028fd81620023a7565b955060408801356001600160401b03808211156200291a57600080fd5b620029288b838c01620023e7565b909750955060608a01359150808211156200294257600080fd5b50620029518a828b01620023e7565b9094509250506080880135620029678162002654565b8091505092959891949750929550565b6000806000606084860312156200298d57600080fd5b6200299884620023d2565b92506020840135620029aa81620023a7565b915060408401356001600160401b03811115620029c657600080fd5b620029d48682870162002718565b9150509250925092565b60208082526042908201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960408201527f53746174653a206f6e6c79206966206e6f7420656d657267656e637920737461606082015261746560f01b608082015260a00190565b6001600160a01b03929092168252602082015260400190565b60005b8381101562002a7c57818101518382015260200162002a62565b8381111562000fdb5750506000910152565b600082601f83011262002aa057600080fd5b815162002ab16200273b82620026ee565b81815284602083860101111562002ac757600080fd5b62000c4782602083016020870162002a5f565b60006020828403121562002aed57600080fd5b81516001600160401b0381111562002b0457600080fd5b62000c478482850162002a8e565b60006020828403121562002b2557600080fd5b81516200251a8162002654565b6000815180845262002b4c81602086016020860162002a5f565b601f01601f19169290920160200192915050565b60608152600062002b75606083018662002b32565b828103602084015262002b89818662002b32565b91505060ff83166040830152949350505050565b60ff8916815263ffffffff88811660208301526001600160a01b03888116604084015287821660608401528616608083015260a0820185905261010060c0830181905260009162002bf18483018762002b32565b925080851660e085015250509998505050505050505050565b6020808252603a908201527f506f6c79676f6e5a6b45564d3a3a6f6e6c79506f6c79676f6e5a6b45564d3a2060408201527f6f6e6c7920506f6c79676f6e5a6b45564d20636f6e7472616374000000000000606082015260800190565b60e09290921b6001600160e01b031916825260601b6001600160601b031916600482015260180190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60008262002ce55762002ce562002ca7565b500490565b60006001820162002cff5762002cff62002cbd565b5060010190565b6001600160a01b038416815263ffffffff8316602082015260606040820181905260009062002d389083018462002b32565b95945050505050565b6000825162002d5581846020870162002a5f565b9190910192915050565b63ffffffff95861681529390941660208401526001600160a01b039182166040840152166060820152608081019190915260a00190565b60008060006060848603121562002dac57600080fd5b83516001600160401b038082111562002dc457600080fd5b62002dd28783880162002a8e565b9450602086015191508082111562002de957600080fd5b5062002df88682870162002a8e565b92505060408401516200289f8162002654565b60008262002e1d5762002e1d62002ca7565b500690565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60608152600062002e6160608301878962002e22565b828103602084015262002e7681868862002e22565b91505060ff831660408301529695505050505050565b6000835162002ea081846020880162002a5f565b83519083019062002eb681836020880162002a5f565b01949350505050565b6000808585111562002ed057600080fd5b8386111562002ede57600080fd5b5050820193919092039150565b600080600080600080600060e0888a03121562002f0757600080fd5b873562002f1481620023a7565b9650602088013562002f2681620023a7565b955060408801359450606088013593506080880135620026d18162002654565b6020808252603c908201527f506f6c79676f6e5a6b45564d4272696467653a3a5f7065726d69743a2050657260408201527f6d6974206f776e6572206d757374206265207468652073656e64657200000000606082015260800190565b60208082526033908201527f506f6c79676f6e5a6b45564d4272696467653a3a5f7065726d69743a205370656040820152726e646572206d7573742062652027746869732760681b606082015260800190565b8015158114620023bd57600080fd5b600080600080600080600080610100898b0312156200302357600080fd5b88356200303081620023a7565b975060208901356200304281620023a7565b965060408901359550606089013594506080890135620030628162002ff6565b935060a0890135620030748162002654565b979a969950949793969295929450505060c08201359160e0013590565b600181815b80851115620030d2578160001904821115620030b657620030b662002cbd565b80851615620030c457918102915b93841c939080029062003096565b509250929050565b600082620030eb5750600162000a55565b81620030fa5750600062000a55565b81600181146200311357600281146200311e576200313e565b600191505062000a55565b60ff84111562003132576200313262002cbd565b50506001821b62000a55565b5060208310610133831016604e8410600b841016171562003163575081810a62000a55565b6200316f838362003091565b806000190482111562003186576200318662002cbd565b029392505050565b60006200251a8383620030da565b600082821015620031b157620031b162002cbd565b500390565b60008219821115620031cc57620031cc62002cbd565b500190565b634e487b7160e01b600052600160045260246000fd5b600060208284031215620031fa57600080fd5b5051919050565b6000602082840312156200321457600080fd5b81516200251a8162002ff6565b6020815260006200251a602083018462002b3256fe60c06040523480156200001157600080fd5b5060405162001542380380620015428339810160408190526200003491620002ad565b82826003620000448382620003c1565b506004620000538282620003c1565b5050600580546001600160a81b0319163360ff60a01b191617600160a01b60ff851602179055504660808190526200008b9062000098565b60a052506200048d915050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f620000c562000146565b805160209182012060408051808201825260018152603160f81b90840152805192830193909352918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060820152608081018390523060a082015260c001604051602081830303815290604052805190602001209050919050565b606060038054620001579062000332565b80601f0160208091040260200160405190810160405280929190818152602001828054620001859062000332565b8015620001d65780601f10620001aa57610100808354040283529160200191620001d6565b820191906000526020600020905b815481529060010190602001808311620001b857829003601f168201915b5050505050905090565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200020857600080fd5b81516001600160401b0380821115620002255762000225620001e0565b604051601f8301601f19908116603f01168101908282118183101715620002505762000250620001e0565b816040528381526020925086838588010111156200026d57600080fd5b600091505b8382101562000291578582018301518183018401529082019062000272565b83821115620002a35760008385830101525b9695505050505050565b600080600060608486031215620002c357600080fd5b83516001600160401b0380821115620002db57600080fd5b620002e987838801620001f6565b945060208601519150808211156200030057600080fd5b506200030f86828701620001f6565b925050604084015160ff811681146200032757600080fd5b809150509250925092565b600181811c908216806200034757607f821691505b6020821081036200036857634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620003bc57600081815260208120601f850160051c81016020861015620003975750805b601f850160051c820191505b81811015620003b857828155600101620003a3565b5050505b505050565b81516001600160401b03811115620003dd57620003dd620001e0565b620003f581620003ee845462000332565b846200036e565b602080601f8311600181146200042d5760008415620004145750858301515b600019600386901b1c1916600185901b178555620003b8565b600085815260208120601f198616915b828110156200045e578886015182559484019460019091019084016200043d565b50858210156200047d5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60805160a051611088620004ba60003960006104690152600081816102f9015261043301526110886000f3fe608060405234801561001057600080fd5b50600436106101375760003560e01c806370a08231116100b8578063a457c2d71161007c578063a457c2d7146102ce578063a9059cbb146102e1578063cd0d0096146102f4578063d505accf1461031b578063dd62ed3e1461032e578063ffa1ad741461034157600080fd5b806370a082311461023f5780637ecebe001461026857806395d89b41146102885780639dc29fac14610290578063a3c573eb146102a357600080fd5b806330adf81f116100ff57806330adf81f146101c9578063313ce567146101f05780633644e5151461020f578063395093511461021757806340c10f191461022a57600080fd5b806306fdde031461013c578063095ea7b31461015a57806318160ddd1461017d57806320606b701461018f57806323b872dd146101b6575b600080fd5b610144610361565b6040516101519190610dc2565b60405180910390f35b61016d610168366004610e33565b6103f3565b6040519015158152602001610151565b6002545b604051908152602001610151565b6101817f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81565b61016d6101c4366004610e5d565b61040b565b6101817f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b600554600160a01b900460ff1660405160ff9091168152602001610151565b61018161042f565b61016d610225366004610e33565b61048b565b61023d610238366004610e33565b6104ad565b005b61018161024d366004610e99565b6001600160a01b031660009081526020819052604090205490565b610181610276366004610e99565b60066020526000908152604090205481565b6101446104ee565b61023d61029e366004610e33565b6104fd565b6005546102b6906001600160a01b031681565b6040516001600160a01b039091168152602001610151565b61016d6102dc366004610e33565b610531565b61016d6102ef366004610e33565b6105ac565b6101817f000000000000000000000000000000000000000000000000000000000000000081565b61023d610329366004610ebb565b6105ba565b61018161033c366004610f2e565b6107f5565b610144604051806040016040528060018152602001603160f81b81525081565b60606003805461037090610f61565b80601f016020809104026020016040519081016040528092919081815260200182805461039c90610f61565b80156103e95780601f106103be576101008083540402835291602001916103e9565b820191906000526020600020905b8154815290600101906020018083116103cc57829003601f168201915b5050505050905090565b600033610401818585610820565b5060019392505050565b600033610419858285610945565b6104248585856109bf565b506001949350505050565b60007f000000000000000000000000000000000000000000000000000000000000000046146104665761046146610b51565b905090565b507f000000000000000000000000000000000000000000000000000000000000000090565b60003361040181858561049e83836107f5565b6104a89190610fb1565b610820565b6005546001600160a01b031633146104e05760405162461bcd60e51b81526004016104d790610fc9565b60405180910390fd5b6104ea8282610bfd565b5050565b60606004805461037090610f61565b6005546001600160a01b031633146105275760405162461bcd60e51b81526004016104d790610fc9565b6104ea8282610caa565b6000338161053f82866107f5565b90508381101561059f5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016104d7565b6104248286868403610820565b6000336104018185856109bf565b834211156106165760405162461bcd60e51b8152602060048201526024808201527f546f6b656e577261707065643a3a7065726d69743a20457870697265642070656044820152631c9b5a5d60e21b60648201526084016104d7565b6001600160a01b038716600090815260066020526040812080547f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918a918a918a91908661066383611019565b909155506040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e00160405160208183030381529060405280519060200120905060006106c161042f565b60405161190160f01b602082015260228101919091526042810183905260620160408051601f198184030181528282528051602091820120600080855291840180845281905260ff89169284019290925260608301879052608083018690529092509060019060a0016020604051602081039080840390855afa15801561074c573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116158015906107825750896001600160a01b0316816001600160a01b0316145b6107de5760405162461bcd60e51b815260206004820152602760248201527f546f6b656e577261707065643a3a7065726d69743a20496e76616c6964207369604482015266676e617475726560c81b60648201526084016104d7565b6107e98a8a8a610820565b50505050505050505050565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166108825760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016104d7565b6001600160a01b0382166108e35760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016104d7565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b600061095184846107f5565b905060001981146109b957818110156109ac5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016104d7565b6109b98484848403610820565b50505050565b6001600160a01b038316610a235760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016104d7565b6001600160a01b038216610a855760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016104d7565b6001600160a01b03831660009081526020819052604090205481811015610afd5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016104d7565b6001600160a01b0384811660008181526020818152604080832087870390559387168083529184902080548701905592518581529092600080516020611033833981519152910160405180910390a36109b9565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f610b7c610361565b805160209182012060408051808201825260018152603160f81b90840152805192830193909352918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060820152608081018390523060a082015260c001604051602081830303815290604052805190602001209050919050565b6001600160a01b038216610c535760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016104d7565b8060026000828254610c659190610fb1565b90915550506001600160a01b03821660008181526020818152604080832080548601905551848152600080516020611033833981519152910160405180910390a35050565b6001600160a01b038216610d0a5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016104d7565b6001600160a01b03821660009081526020819052604090205481811015610d7e5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016104d7565b6001600160a01b0383166000818152602081815260408083208686039055600280548790039055518581529192916000805160206110338339815191529101610938565b600060208083528351808285015260005b81811015610def57858101830151858201604001528201610dd3565b81811115610e01576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b0381168114610e2e57600080fd5b919050565b60008060408385031215610e4657600080fd5b610e4f83610e17565b946020939093013593505050565b600080600060608486031215610e7257600080fd5b610e7b84610e17565b9250610e8960208501610e17565b9150604084013590509250925092565b600060208284031215610eab57600080fd5b610eb482610e17565b9392505050565b600080600080600080600060e0888a031215610ed657600080fd5b610edf88610e17565b9650610eed60208901610e17565b95506040880135945060608801359350608088013560ff81168114610f1157600080fd5b9699959850939692959460a0840135945060c09093013592915050565b60008060408385031215610f4157600080fd5b610f4a83610e17565b9150610f5860208401610e17565b90509250929050565b600181811c90821680610f7557607f821691505b602082108103610f9557634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60008219821115610fc457610fc4610f9b565b500190565b60208082526030908201527f546f6b656e577261707065643a3a6f6e6c794272696467653a204e6f7420506f60408201526f6c79676f6e5a6b45564d42726964676560801b606082015260800190565b60006001820161102b5761102b610f9b565b506001019056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212208b7986f78e961ad6c0885b86b24ce427045be98073c1f3d7fe18180542ab873564736f6c634300080f0033506f6c79676f6e5a6b45564d4272696467653a3a5f7665726966794c6561663aa26469706673582212207321963add10aa42fbf70097691018c23164a96132c6cd71e46023fffa7d461764736f6c634300080f0033462d16bd5d76b82bd83980aa8f5f932f2571d818ae0c2b5eedef2fc44d2a10bb3618fff95e0394f46789eeddfd7dfa62d3088f3095566fe18e05c2472ec4138e1b", + "0xf882028083989680949d98deabc42dd696deb9e40b4f1cab7ddbf5598880b864647c576c0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000ae4bb80be56b819606589de61d5ec3b522eeb0320000000000000000000000000000000000000000000000000000000000000000740c627053d7d5129819020147d32fbaf1e99ac81f92da249f0e7cfceac8582f5a0df48a4d291fe183ca96c4b6c4048b336dda17b2e940993d266c74549656791c" ] } \ No newline at end of file diff --git a/docker/scripts/genesis_docker.json b/docker/scripts/genesis_docker.json index 5914c1c..b9ee709 100644 --- a/docker/scripts/genesis_docker.json +++ b/docker/scripts/genesis_docker.json @@ -1,11 +1,11 @@ { - "root": "0x2fce97be07293e005c15b25be53b51d8fd978865cafc0aa20c8d44175b03baa3", + "root": "0x16851d9301e0a13a24dab6b0baec16a73502cdce67e3d3efa2629c86940d34f4", "genesis": [ { "balance": "200000000000000000000000000", "nonce": "1", "address": "0x9d98deabc42dd696deb9e40b4f1cab7ddbf55988", - "bytecode": "0x608060405260043610620001675760003560e01c80637b6323c111620000c5578063d02103ca1162000078578063d02103ca146200047d578063d96a15f7146200049f578063dbc1697614620004b6578063ed6be5c914620004ce578063ee25560b14620004e5578063ff634ed7146200051657600080fd5b80637b6323c1146200037057806381b1c17414620003955780639e34070f14620003cf578063a08e8a0814620003f4578063aaa13cc2146200041e578063bab161bf146200044357600080fd5b806334ac9cf2116200011e57806334ac9cf214620002a25780633ae0504714620002c45780633da8168214620002dc5780633e1970431462000301578063463855491462000326578063647c576c146200034b57600080fd5b80630871e971146200016c57806315064c9614620001855780632072f6c514620001b657806322e95f2c14620001ce5780632dfdf0b5146200020c578063318aee3d1462000233575b600080fd5b620001836200017d3660046200244d565b6200052d565b005b3480156200019257600080fd5b50602254620001a19060ff1681565b60405190151581526020015b60405180910390f35b348015620001c357600080fd5b5062000183620009cd565b348015620001db57600080fd5b50620001f3620001ed366004620024da565b62000a06565b6040516001600160a01b039091168152602001620001ad565b3480156200021957600080fd5b506200022460215481565b604051908152602001620001ad565b3480156200024057600080fd5b506200027d6200025236600462002516565b60256020526000908152604090205463ffffffff81169064010000000090046001600160a01b031682565b6040805163ffffffff90931683526001600160a01b03909116602083015201620001ad565b348015620002af57600080fd5b50602754620001f3906001600160a01b031681565b348015620002d157600080fd5b506200022462000a59565b348015620002e957600080fd5b50620001a1620002fb36600462002605565b62000b4c565b3480156200030e57600080fd5b50620002246200032036600462002683565b62000c4e565b3480156200033357600080fd5b50620001836200034536600462002794565b62000cdb565b3480156200035857600080fd5b50620001836200036a3660046200287b565b62000e81565b3480156200037d57600080fd5b50620001836200038f36600462002794565b62000fe0565b348015620003a257600080fd5b50620001f3620003b4366004620028cb565b6024602052600090815260409020546001600160a01b031681565b348015620003dc57600080fd5b50620001a1620003ee366004620028cb565b62001469565b3480156200040157600080fd5b506200040b600081565b60405160ff9091168152602001620001ad565b3480156200042b57600080fd5b50620001f36200043d366004620028e5565b620014ae565b3480156200045057600080fd5b506022546200046790610100900463ffffffff1681565b60405163ffffffff9091168152602001620001ad565b3480156200048a57600080fd5b50602654620001f3906001600160a01b031681565b62000183620004b036600462002999565b620015c5565b348015620004c357600080fd5b506200018362001771565b348015620004db57600080fd5b5062000467600081565b348015620004f257600080fd5b506200022462000504366004620028cb565b60236020526000908152604090205481565b3480156200052357600080fd5b506200040b600181565b60225460ff16156200055c5760405162461bcd60e51b8152600401620005539062002a01565b60405180910390fd5b60225463ffffffff610100909104811690861603620005e45760405162461bcd60e51b815260206004820152603d60248201527f506f6c79676f6e5a6b45564d4272696467653a3a62726964676541737365743a60448201527f2044657374696e6174696f6e2063616e6e6f7420626520697473656c66000000606482015260840162000553565b60008060606001600160a01b03891662000687578534146200067d5760405162461bcd60e51b8152602060048201526044602482018190527f506f6c79676f6e5a6b45564d4272696467653a3a62726964676541737365743a908201527f20416d6f756e7420646f6573206e6f74206d61746368206d6573736167652e76606482015263616c756560e01b608482015260a40162000553565b60009150620008e7565b6001600160a01b03808a1660009081526025602090815260409182902082518084019093525463ffffffff81168352640100000000900490921691810182905290156200074457604051632770a7eb60e21b8152336004820152602481018890526001600160a01b038b1690639dc29fac90604401600060405180830381600087803b1580156200071757600080fd5b505af11580156200072c573d6000803e3d6000fd5b505050508060200151935080600001519250620008e5565b84156200075957620007598a888888620017a8565b620007706001600160a01b038b1633308a62001bd0565b899350602260019054906101000a900463ffffffff169250896001600160a01b03166306fdde036040518163ffffffff1660e01b8152600401600060405180830381865afa158015620007c7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620007f1919081019062002ae4565b8a6001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa15801562000830573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200085a919081019062002ae4565b8b6001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000899573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620008bf919062002b1d565b604051602001620008d39392919062002b6b565b60405160208183030381529060405291505b505b7f501781209a1f8899323b96b4ef08b168df93e0a90c673d1e4cce39366cb62f9b600083858b8b8b876021546040516200092998979695949392919062002ba8565b60405180910390a1620009546200094e600084868c8c8c888051906020012062000c4e565b62001c3d565b6026546001600160a01b03166333d6247d6200096f62000a59565b6040518263ffffffff1660e01b81526004016200098e91815260200190565b600060405180830381600087803b158015620009a957600080fd5b505af1158015620009be573d6000803e3d6000fd5b50505050505050505050505050565b6027546001600160a01b03163314620009fa5760405162461bcd60e51b8152600401620005539062002c15565b62000a0462001d8e565b565b600060246000848460405160200162000a2192919062002c72565b60408051601f19818403018152918152815160209283012083529082019290925201600020546001600160a01b031690505b92915050565b602154600090819081805b602081101562000b43578260011660010362000ac4576001816020811062000a905762000a9062002c9c565b0154604080516020810192909252810185905260600160405160208183030381529060405280519060200120935062000af1565b60408051602081018690529081018390526060016040516020818303038152906040528051906020012093505b62000afe60028462002cde565b6040805160208101859052908101849052909350606001604051602081830303815290604052805190602001209150808062000b3a9062002cf5565b91505062000a64565b50919392505050565b60008467ffffffffffffffff8416825b602081101562000c3f578160011660010362000bc95786818151811062000b875762000b8762002c9c565b60200260200101518360405160200162000bab929190918252602082015260400190565b60405160208183030381529060405280519060200120925062000c1b565b8287828151811062000bdf5762000bdf62002c9c565b602002602001015160405160200162000c02929190918252602082015260400190565b6040516020818303038152906040528051906020012092505b62000c2860028362002cde565b91508062000c368162002cf5565b91505062000b5c565b5050821490505b949350505050565b6040516001600160f81b031960f889901b1660208201526001600160e01b031960e088811b821660218401526001600160601b0319606089811b821660258601529188901b909216603984015285901b16603d8201526051810183905260718101829052600090609101604051602081830303815290604052805190602001209050979650505050505050565b60225460ff161562000d015760405162461bcd60e51b8152600401620005539062002a01565b62000d178a8a8a8a8a8a8a8a8a8a600162001dec565b62000d288963ffffffff166200207d565b6000836001600160a01b03168387898560405160240162000d4c9392919062002d11565b60408051601f198184030181529181526020820180516001600160e01b0316630c035af960e11b1790525162000d83919062002d4c565b60006040518083038185875af1925050503d806000811462000dc2576040519150601f19603f3d011682016040523d82523d6000602084013e62000dc7565b606091505b505090508062000e335760405162461bcd60e51b815260206004820152603060248201527f506f6c79676f6e5a6b45564d4272696467653a3a636c61696d4d65737361676560448201526f0e8813595cdcd859d94819985a5b195960821b606482015260840162000553565b7f25308c93ceeed162da955b3f7ce3e3f93606579e40fb92029faa9efe275459838a8888878760405162000e6c95949392919062002d6a565b60405180910390a15050505050505050505050565b600054610100900460ff161580801562000ea25750600054600160ff909116105b8062000ebe5750303b15801562000ebe575060005460ff166001145b62000f235760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840162000553565b6000805460ff19166001179055801562000f47576000805461ff0019166101001790555b6022805463ffffffff86166101000264ffffffff0019909116179055602680546001600160a01b038086166001600160a01b0319928316179092556027805492851692909116919091179055801562000fda576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b60225460ff1615620010065760405162461bcd60e51b8152600401620005539062002a01565b6200101c8a8a8a8a8a8a8a8a8a8a600062001dec565b6200102d8963ffffffff166200207d565b6001600160a01b0385166200112457604080516000808252602082019092526001600160a01b03851690849060405162001068919062002d4c565b60006040518083038185875af1925050503d8060008114620010a7576040519150601f19603f3d011682016040523d82523d6000602084013e620010ac565b606091505b50509050806200111d5760405162461bcd60e51b815260206004820152603560248201527f506f6c79676f6e5a6b45564d4272696467653a3a636c61696d41737365743a20604482015274115d1a195c881d1c985b9cd9995c8819985a5b1959605a1b606482015260840162000553565b506200141c565b60225463ffffffff6101009091048116908716036200115957620011536001600160a01b0386168484620020bf565b6200141c565b600086866040516020016200117092919062002c72565b60408051601f198184030181529181528151602092830120600081815260249093529120549091506001600160a01b031680620013b457600080600085806020019051810190620011c2919062002da1565b925092509250600085848484604051620011dc90620023b3565b620011ea9392919062002b6b565b8190604051809103906000f59050801580156200120b573d6000803e3d6000fd5b506040516340c10f1960e01b81526001600160a01b038b81166004830152602482018b9052919250908216906340c10f1990604401600060405180830381600087803b1580156200125b57600080fd5b505af115801562001270573d6000803e3d6000fd5b50505050806024600088815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060405180604001604052808d63ffffffff1681526020018c6001600160a01b031681525060256000836001600160a01b03166001600160a01b0316815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a8154816001600160a01b0302191690836001600160a01b031602179055509050507fccd7715648d1f2bb13e158f96b5b6c3aeda555d4cb87112e274a6f28bc571d598c8c83604051620013a29392919063ffffffff9390931683526001600160a01b03918216602084015216604082015260600190565b60405180910390a15050505062001419565b6040516340c10f1960e01b81526001600160a01b038681166004830152602482018690528216906340c10f1990604401600060405180830381600087803b158015620013ff57600080fd5b505af115801562001414573d6000803e3d6000fd5b505050505b50505b7f25308c93ceeed162da955b3f7ce3e3f93606579e40fb92029faa9efe2754598389878786866040516200145595949392919062002d6a565b60405180910390a150505050505050505050565b6000806200147a6101008462002cde565b905060006200148c6101008562002e17565b60009283526023602052604090922054600190921b9182169091149392505050565b6000808888604051602001620014c692919062002c72565b604051602081830303815290604052805190602001209050600060ff60f81b308360405180602001620014f990620023b3565b601f1982820381018352601f90910116604081905262001526908d908d908d908d908d9060200162002e57565b60408051601f198184030181529082905262001546929160200162002e98565b604051602081830303815290604052805190602001206040516020016200159f94939291906001600160f81b031994909416845260609290921b6001600160601b03191660018401526015830152603582015260550190565b60408051808303601f1901815291905280516020909101209a9950505050505050505050565b60225460ff1615620015eb5760405162461bcd60e51b8152600401620005539062002a01565b60225463ffffffff610100909104811690841603620016735760405162461bcd60e51b815260206004820152603f60248201527f506f6c79676f6e5a6b45564d4272696467653a3a6272696467654d657373616760448201527f653a2044657374696e6174696f6e2063616e6e6f7420626520697473656c6600606482015260840162000553565b7f501781209a1f8899323b96b4ef08b168df93e0a90c673d1e4cce39366cb62f9b6001602260019054906101000a900463ffffffff163386863487602154604051620016c798979695949392919062002ba8565b60405180910390a1620016fe6200094e6001602260019054906101000a900463ffffffff1633878734888051906020012062000c4e565b6026546001600160a01b03166333d6247d6200171962000a59565b6040518263ffffffff1660e01b81526004016200173891815260200190565b600060405180830381600087803b1580156200175357600080fd5b505af115801562001768573d6000803e3d6000fd5b50505050505050565b6027546001600160a01b031633146200179e5760405162461bcd60e51b8152600401620005539062002c15565b62000a04620020f1565b6000620017eb83838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250620021a092505050565b9050632afa533160e01b6001600160e01b0319821601620019e45760008080808080806200181d896004818d62002ecb565b8101906200182c919062002ef7565b9650965096509650965096509650336001600160a01b0316876001600160a01b0316146200186e5760405162461bcd60e51b8152600401620005539062002f52565b6001600160a01b0386163014620018995760405162461bcd60e51b8152600401620005539062002faf565b8a8514620019105760405162461bcd60e51b815260206004820152603960248201527f506f6c79676f6e5a6b45564d4272696467653a3a5f7065726d69743a2050657260448201527f6d697420616d6f756e7420646f6573206e6f74206d6174636800000000000000606482015260840162000553565b604080516001600160a01b0389811660248301528881166044830152606482018890526084820187905260ff861660a483015260c4820185905260e48083018590528351808403909101815261010490920183526020820180516001600160e01b031663d505accf60e01b1790529151918e169162001990919062002d4c565b6000604051808303816000865af19150503d8060008114620019cf576040519150601f19603f3d011682016040523d82523d6000602084013e620019d4565b606091505b5050505050505050505062001bc9565b6001600160e01b031981166323f2ebc360e21b1462001a5a5760405162461bcd60e51b815260206004820152602b60248201527f506f6c79676f6e5a6b45564d4272696467653a3a5f7065726d69743a204e6f7460448201526a081d985b1a590818d85b1b60aa1b606482015260840162000553565b60008080808080808062001a728a6004818e62002ecb565b81019062001a81919062003011565b97509750975097509750975097509750336001600160a01b0316886001600160a01b03161462001ac55760405162461bcd60e51b8152600401620005539062002f52565b6001600160a01b038716301462001af05760405162461bcd60e51b8152600401620005539062002faf565b604080516001600160a01b038a811660248301528981166044830152606482018990526084820188905286151560a483015260ff861660c483015260e482018590526101048083018590528351808403909101815261012490920183526020820180516001600160e01b03166323f2ebc360e21b1790529151918f169162001b79919062002d4c565b6000604051808303816000865af19150503d806000811462001bb8576040519150601f19603f3d011682016040523d82523d6000602084013e62001bbd565b606091505b50505050505050505050505b5050505050565b6040516001600160a01b038085166024830152831660448201526064810182905262000fda9085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152620021a7565b80600162001c4e602060026200319a565b62001c5a9190620031a8565b6021541062001cbf5760405162461bcd60e51b815260206004820152602a60248201527f4465706f736974436f6e74726163743a5f6465706f7369743a204d65726b6c65604482015269081d1c995948199d5b1b60b21b606482015260840162000553565b60016021600082825462001cd49190620031c2565b909155505060215460005b602081101562001d7e578160011660010362001d1457826001826020811062001d0c5762001d0c62002c9c565b015550505050565b6001816020811062001d2a5762001d2a62002c9c565b0154604080516020810192909252810184905260600160405160208183030381529060405280519060200120925060028262001d67919062002cde565b91508062001d758162002cf5565b91505062001cdf565b5062001d89620031dd565b505050565b60225460ff161562001db45760405162461bcd60e51b8152600401620005539062002a01565b6022805460ff191660011790556040517f2261efe5aef6fedc1fd1550b25facc9181745623049c7901287030b9ad1a549790600090a1565b62001dfd8a63ffffffff1662001469565b1562001e545760405162461bcd60e51b815260206004820152603060248201526000805160206200479b83398151915260448201526f08105b1c9958591e4818db185a5b595960821b606482015260840162000553565b6026546040805160208082018d90528183018c9052825180830384018152606083019384905280519101206312bd9b1960e11b90925260648101919091526000916001600160a01b03169063257b3632906084016020604051808303816000875af115801562001ec8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001eee9190620031f3565b90508060000362001f575760405162461bcd60e51b815260206004820152603760248201526000805160206200479b83398151915260448201527f20476c6f62616c45786974526f6f7420696e76616c6964000000000000000000606482015260840162000553565b60225463ffffffff878116610100909204161462001fd95760405162461bcd60e51b815260206004820152604360248201526000805160206200479b83398151915260448201527f2044657374696e6174696f6e206e6574776f726b20646f6573206e6f74206d616064820152620e8c6d60eb1b608482015260a40162000553565b602254600090610100900463ffffffff1662001ff757508862001ffa565b50895b6200202562002016848b8b8b8b8b8b8051906020012062000c4e565b8e8e63ffffffff168462000b4c565b620009be5760405162461bcd60e51b815260206004820152603260248201526000805160206200479b8339815191526044820152711024b73b30b634b21039b6ba10383937b7b360711b606482015260840162000553565b60006200208d6101008362002cde565b905060006200209f6101008462002e17565b6000928352602360205260409092208054600190931b9092179091555050565b6040516001600160a01b03831660248201526044810182905262001d8990849063a9059cbb60e01b9060640162001c05565b60225460ff166200216b5760405162461bcd60e51b815260206004820152603b60248201527f456d657267656e63794d616e616765723a3a6966456d657267656e637953746160448201527f74653a206f6e6c7920696620656d657267656e63792073746174650000000000606482015260840162000553565b6022805460ff191690556040517f1e5e34eea33501aecf2ebec9fe0e884a40804275ea7fe10b2ba084c8374308b390600090a1565b6020015190565b6000620021fe826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316620022809092919063ffffffff16565b80519091501562001d8957808060200190518101906200221f91906200320d565b62001d895760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840162000553565b606062000c46848460008585600080866001600160a01b03168587604051620022aa919062002d4c565b60006040518083038185875af1925050503d8060008114620022e9576040519150601f19603f3d011682016040523d82523d6000602084013e620022ee565b606091505b509150915062002301878383876200230c565b979650505050505050565b606083156200238057825160000362002378576001600160a01b0385163b620023785760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640162000553565b508162000c46565b62000c468383815115620023975781518083602001fd5b8060405162461bcd60e51b81526004016200055391906200322d565b611558806200324383390190565b6001600160a01b0381168114620023d757600080fd5b50565b8035620023e781620023c1565b919050565b803563ffffffff81168114620023e757600080fd5b60008083601f8401126200241457600080fd5b50813567ffffffffffffffff8111156200242d57600080fd5b6020830191508360208285010111156200244657600080fd5b9250929050565b60008060008060008060a087890312156200246757600080fd5b86356200247481620023c1565b95506200248460208801620023ec565b945060408701356200249681620023c1565b935060608701359250608087013567ffffffffffffffff811115620024ba57600080fd5b620024c889828a0162002401565b979a9699509497509295939492505050565b60008060408385031215620024ee57600080fd5b620024f983620023ec565b915060208301356200250b81620023c1565b809150509250929050565b6000602082840312156200252957600080fd5b81356200253681620023c1565b9392505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156200257f576200257f6200253d565b604052919050565b600082601f8301126200259957600080fd5b8135602067ffffffffffffffff821115620025b857620025b86200253d565b8160051b620025c982820162002553565b9283528481018201928281019087851115620025e457600080fd5b83870192505b848310156200230157823582529183019190830190620025ea565b600080600080608085870312156200261c57600080fd5b84359350602085013567ffffffffffffffff808211156200263c57600080fd5b6200264a8883890162002587565b94506040870135915080821682146200266257600080fd5b509396929550929360600135925050565b60ff81168114620023d757600080fd5b600080600080600080600060e0888a0312156200269f57600080fd5b8735620026ac8162002673565b9650620026bc60208901620023ec565b95506040880135620026ce81620023c1565b9450620026de60608901620023ec565b93506080880135620026f081620023c1565b9699959850939692959460a0840135945060c09093013592915050565b600067ffffffffffffffff8211156200272a576200272a6200253d565b50601f01601f191660200190565b600082601f8301126200274a57600080fd5b8135620027616200275b826200270d565b62002553565b8181528460208386010111156200277757600080fd5b816020850160208301376000918101602001919091529392505050565b6000806000806000806000806000806101408b8d031215620027b557600080fd5b8a3567ffffffffffffffff80821115620027ce57600080fd5b620027dc8e838f0162002587565b9b50620027ec60208e01620023ec565b9a5060408d0135995060608d013598506200280a60808e01620023ec565b97506200281a60a08e01620023da565b96506200282a60c08e01620023ec565b95506200283a60e08e01620023da565b94506101008d013593506101208d01359150808211156200285a57600080fd5b50620028698d828e0162002738565b9150509295989b9194979a5092959850565b6000806000606084860312156200289157600080fd5b6200289c84620023ec565b92506020840135620028ae81620023c1565b91506040840135620028c081620023c1565b809150509250925092565b600060208284031215620028de57600080fd5b5035919050565b600080600080600080600060a0888a0312156200290157600080fd5b6200290c88620023ec565b965060208801356200291e81620023c1565b9550604088013567ffffffffffffffff808211156200293c57600080fd5b6200294a8b838c0162002401565b909750955060608a01359150808211156200296457600080fd5b50620029738a828b0162002401565b9094509250506080880135620029898162002673565b8091505092959891949750929550565b600080600060608486031215620029af57600080fd5b620029ba84620023ec565b92506020840135620029cc81620023c1565b9150604084013567ffffffffffffffff811115620029e957600080fd5b620029f78682870162002738565b9150509250925092565b60208082526042908201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960408201527f53746174653a206f6e6c79206966206e6f7420656d657267656e637920737461606082015261746560f01b608082015260a00190565b60005b8381101562002a8657818101518382015260200162002a6c565b8381111562000fda5750506000910152565b600082601f83011262002aaa57600080fd5b815162002abb6200275b826200270d565b81815284602083860101111562002ad157600080fd5b62000c4682602083016020870162002a69565b60006020828403121562002af757600080fd5b815167ffffffffffffffff81111562002b0f57600080fd5b62000c468482850162002a98565b60006020828403121562002b3057600080fd5b8151620025368162002673565b6000815180845262002b5781602086016020860162002a69565b601f01601f19169290920160200192915050565b60608152600062002b80606083018662002b3d565b828103602084015262002b94818662002b3d565b91505060ff83166040830152949350505050565b60ff8916815263ffffffff88811660208301526001600160a01b03888116604084015287821660608401528616608083015260a0820185905261010060c0830181905260009162002bfc8483018762002b3d565b925080851660e085015250509998505050505050505050565b6020808252603a908201527f506f6c79676f6e5a6b45564d3a3a6f6e6c79506f6c79676f6e5a6b45564d3a2060408201527f6f6e6c7920506f6c79676f6e5a6b45564d20636f6e7472616374000000000000606082015260800190565b60e09290921b6001600160e01b031916825260601b6001600160601b031916600482015260180190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60008262002cf05762002cf062002cb2565b500490565b60006001820162002d0a5762002d0a62002cc8565b5060010190565b6001600160a01b038416815263ffffffff8316602082015260606040820181905260009062002d439083018462002b3d565b95945050505050565b6000825162002d6081846020870162002a69565b9190910192915050565b63ffffffff95861681529390941660208401526001600160a01b039182166040840152166060820152608081019190915260a00190565b60008060006060848603121562002db757600080fd5b835167ffffffffffffffff8082111562002dd057600080fd5b62002dde8783880162002a98565b9450602086015191508082111562002df557600080fd5b5062002e048682870162002a98565b9250506040840151620028c08162002673565b60008262002e295762002e2962002cb2565b500690565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60608152600062002e6d60608301878962002e2e565b828103602084015262002e8281868862002e2e565b91505060ff831660408301529695505050505050565b6000835162002eac81846020880162002a69565b83519083019062002ec281836020880162002a69565b01949350505050565b6000808585111562002edc57600080fd5b8386111562002eea57600080fd5b5050820193919092039150565b600080600080600080600060e0888a03121562002f1357600080fd5b873562002f2081620023c1565b9650602088013562002f3281620023c1565b955060408801359450606088013593506080880135620026f08162002673565b6020808252603c908201527f506f6c79676f6e5a6b45564d4272696467653a3a5f7065726d69743a2050657260408201527f6d6974206f776e6572206d757374206265207468652073656e64657200000000606082015260800190565b60208082526033908201527f506f6c79676f6e5a6b45564d4272696467653a3a5f7065726d69743a205370656040820152726e646572206d7573742062652027746869732760681b606082015260800190565b8015158114620023d757600080fd5b600080600080600080600080610100898b0312156200302f57600080fd5b88356200303c81620023c1565b975060208901356200304e81620023c1565b9650604089013595506060890135945060808901356200306e8162003002565b935060a0890135620030808162002673565b979a969950949793969295929450505060c08201359160e0013590565b600181815b80851115620030de578160001904821115620030c257620030c262002cc8565b80851615620030d057918102915b93841c9390800290620030a2565b509250929050565b600082620030f75750600162000a53565b81620031065750600062000a53565b81600181146200311f57600281146200312a576200314a565b600191505062000a53565b60ff8411156200313e576200313e62002cc8565b50506001821b62000a53565b5060208310610133831016604e8410600b84101617156200316f575081810a62000a53565b6200317b83836200309d565b806000190482111562003192576200319262002cc8565b029392505050565b6000620025368383620030e6565b600082821015620031bd57620031bd62002cc8565b500390565b60008219821115620031d857620031d862002cc8565b500190565b634e487b7160e01b600052600160045260246000fd5b6000602082840312156200320657600080fd5b5051919050565b6000602082840312156200322057600080fd5b8151620025368162003002565b60208152600062002536602083018462002b3d56fe60c06040523480156200001157600080fd5b5060405162001558380380620015588339810160408190526200003491620002ad565b82826003620000448382620003c1565b506004620000538282620003c1565b5050600580546001600160a81b0319163360ff60a01b191617600160a01b60ff851602179055504660808190526200008b9062000098565b60a052506200048d915050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f620000c562000146565b805160209182012060408051808201825260018152603160f81b90840152805192830193909352918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060820152608081018390523060a082015260c001604051602081830303815290604052805190602001209050919050565b606060038054620001579062000332565b80601f0160208091040260200160405190810160405280929190818152602001828054620001859062000332565b8015620001d65780601f10620001aa57610100808354040283529160200191620001d6565b820191906000526020600020905b815481529060010190602001808311620001b857829003601f168201915b5050505050905090565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200020857600080fd5b81516001600160401b0380821115620002255762000225620001e0565b604051601f8301601f19908116603f01168101908282118183101715620002505762000250620001e0565b816040528381526020925086838588010111156200026d57600080fd5b600091505b8382101562000291578582018301518183018401529082019062000272565b83821115620002a35760008385830101525b9695505050505050565b600080600060608486031215620002c357600080fd5b83516001600160401b0380821115620002db57600080fd5b620002e987838801620001f6565b945060208601519150808211156200030057600080fd5b506200030f86828701620001f6565b925050604084015160ff811681146200032757600080fd5b809150509250925092565b600181811c908216806200034757607f821691505b6020821081036200036857634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620003bc57600081815260208120601f850160051c81016020861015620003975750805b601f850160051c820191505b81811015620003b857828155600101620003a3565b5050505b505050565b81516001600160401b03811115620003dd57620003dd620001e0565b620003f581620003ee845462000332565b846200036e565b602080601f8311600181146200042d5760008415620004145750858301515b600019600386901b1c1916600185901b178555620003b8565b600085815260208120601f198616915b828110156200045e578886015182559484019460019091019084016200043d565b50858210156200047d5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60805160a05161109e620004ba60003960006104690152600081816102f90152610433015261109e6000f3fe608060405234801561001057600080fd5b50600436106101375760003560e01c806370a08231116100b8578063a457c2d71161007c578063a457c2d7146102ce578063a9059cbb146102e1578063cd0d0096146102f4578063d505accf1461031b578063dd62ed3e1461032e578063ffa1ad741461034157600080fd5b806370a082311461023f5780637ecebe001461026857806395d89b41146102885780639dc29fac14610290578063a3c573eb146102a357600080fd5b806330adf81f116100ff57806330adf81f146101c9578063313ce567146101f05780633644e5151461020f578063395093511461021757806340c10f191461022a57600080fd5b806306fdde031461013c578063095ea7b31461015a57806318160ddd1461017d57806320606b701461018f57806323b872dd146101b6575b600080fd5b610144610361565b6040516101519190610df8565b60405180910390f35b61016d610168366004610e69565b6103f3565b6040519015158152602001610151565b6002545b604051908152602001610151565b6101817f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81565b61016d6101c4366004610e93565b61040b565b6101817f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b600554600160a01b900460ff1660405160ff9091168152602001610151565b61018161042f565b61016d610225366004610e69565b61048b565b61023d610238366004610e69565b6104ad565b005b61018161024d366004610ecf565b6001600160a01b031660009081526020819052604090205490565b610181610276366004610ecf565b60066020526000908152604090205481565b6101446104ee565b61023d61029e366004610e69565b6104fd565b6005546102b6906001600160a01b031681565b6040516001600160a01b039091168152602001610151565b61016d6102dc366004610e69565b610531565b61016d6102ef366004610e69565b6105ac565b6101817f000000000000000000000000000000000000000000000000000000000000000081565b61023d610329366004610ef1565b6105ba565b61018161033c366004610f64565b6107f5565b610144604051806040016040528060018152602001603160f81b81525081565b60606003805461037090610f97565b80601f016020809104026020016040519081016040528092919081815260200182805461039c90610f97565b80156103e95780601f106103be576101008083540402835291602001916103e9565b820191906000526020600020905b8154815290600101906020018083116103cc57829003601f168201915b5050505050905090565b600033610401818585610820565b5060019392505050565b600033610419858285610945565b6104248585856109bf565b506001949350505050565b60007f000000000000000000000000000000000000000000000000000000000000000046146104665761046146610b63565b905090565b507f000000000000000000000000000000000000000000000000000000000000000090565b60003361040181858561049e83836107f5565b6104a89190610fe7565b610820565b6005546001600160a01b031633146104e05760405162461bcd60e51b81526004016104d790610fff565b60405180910390fd5b6104ea8282610c0f565b5050565b60606004805461037090610f97565b6005546001600160a01b031633146105275760405162461bcd60e51b81526004016104d790610fff565b6104ea8282610cce565b6000338161053f82866107f5565b90508381101561059f5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016104d7565b6104248286868403610820565b6000336104018185856109bf565b834211156106165760405162461bcd60e51b8152602060048201526024808201527f546f6b656e577261707065643a3a7065726d69743a20457870697265642070656044820152631c9b5a5d60e21b60648201526084016104d7565b6001600160a01b038716600090815260066020526040812080547f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918a918a918a9190866106638361104f565b909155506040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e00160405160208183030381529060405280519060200120905060006106c161042f565b60405161190160f01b602082015260228101919091526042810183905260620160408051601f198184030181528282528051602091820120600080855291840180845281905260ff89169284019290925260608301879052608083018690529092509060019060a0016020604051602081039080840390855afa15801561074c573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116158015906107825750896001600160a01b0316816001600160a01b0316145b6107de5760405162461bcd60e51b815260206004820152602760248201527f546f6b656e577261707065643a3a7065726d69743a20496e76616c6964207369604482015266676e617475726560c81b60648201526084016104d7565b6107e98a8a8a610820565b50505050505050505050565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166108825760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016104d7565b6001600160a01b0382166108e35760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016104d7565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b600061095184846107f5565b905060001981146109b957818110156109ac5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016104d7565b6109b98484848403610820565b50505050565b6001600160a01b038316610a235760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016104d7565b6001600160a01b038216610a855760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016104d7565b6001600160a01b03831660009081526020819052604090205481811015610afd5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016104d7565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36109b9565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f610b8e610361565b805160209182012060408051808201825260018152603160f81b90840152805192830193909352918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060820152608081018390523060a082015260c001604051602081830303815290604052805190602001209050919050565b6001600160a01b038216610c655760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016104d7565b8060026000828254610c779190610fe7565b90915550506001600160a01b038216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b6001600160a01b038216610d2e5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016104d7565b6001600160a01b03821660009081526020819052604090205481811015610da25760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016104d7565b6001600160a01b0383166000818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101610938565b600060208083528351808285015260005b81811015610e2557858101830151858201604001528201610e09565b81811115610e37576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b0381168114610e6457600080fd5b919050565b60008060408385031215610e7c57600080fd5b610e8583610e4d565b946020939093013593505050565b600080600060608486031215610ea857600080fd5b610eb184610e4d565b9250610ebf60208501610e4d565b9150604084013590509250925092565b600060208284031215610ee157600080fd5b610eea82610e4d565b9392505050565b600080600080600080600060e0888a031215610f0c57600080fd5b610f1588610e4d565b9650610f2360208901610e4d565b95506040880135945060608801359350608088013560ff81168114610f4757600080fd5b9699959850939692959460a0840135945060c09093013592915050565b60008060408385031215610f7757600080fd5b610f8083610e4d565b9150610f8e60208401610e4d565b90509250929050565b600181811c90821680610fab57607f821691505b602082108103610fcb57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60008219821115610ffa57610ffa610fd1565b500190565b60208082526030908201527f546f6b656e577261707065643a3a6f6e6c794272696467653a204e6f7420506f60408201526f6c79676f6e5a6b45564d42726964676560801b606082015260800190565b60006001820161106157611061610fd1565b506001019056fea26469706673582212205af0e6dd4760d4ae367515578b46c4d5988b10ae47473e817626188baa0c03a264736f6c634300080f0033506f6c79676f6e5a6b45564d4272696467653a3a5f7665726966794c6561663aa2646970667358221220d45a8ebcef9fc50cf59227d05e3d4a6aa8384293f92bcc21bc9ac4198225157364736f6c634300080f0033", + "bytecode": "0x608060405260043610620001675760003560e01c80637b6323c111620000c5578063d02103ca1162000078578063d02103ca146200047d578063d96a15f7146200049f578063dbc1697614620004b6578063ed6be5c914620004ce578063ee25560b14620004e5578063ff634ed7146200051657600080fd5b80637b6323c1146200037057806381b1c17414620003955780639e34070f14620003cf578063a08e8a0814620003f4578063aaa13cc2146200041e578063bab161bf146200044357600080fd5b806334ac9cf2116200011e57806334ac9cf214620002a25780633ae0504714620002c45780633da8168214620002dc5780633e1970431462000301578063463855491462000326578063647c576c146200034b57600080fd5b80630871e971146200016c57806315064c9614620001855780632072f6c514620001b657806322e95f2c14620001ce5780632dfdf0b5146200020c578063318aee3d1462000233575b600080fd5b620001836200017d36600462002432565b6200052d565b005b3480156200019257600080fd5b50602254620001a19060ff1681565b60405190151581526020015b60405180910390f35b348015620001c357600080fd5b5062000183620009cf565b348015620001db57600080fd5b50620001f3620001ed366004620024be565b62000a08565b6040516001600160a01b039091168152602001620001ad565b3480156200021957600080fd5b506200022460215481565b604051908152602001620001ad565b3480156200024057600080fd5b506200027d62000252366004620024fa565b60256020526000908152604090205463ffffffff81169064010000000090046001600160a01b031682565b6040805163ffffffff90931683526001600160a01b03909116602083015201620001ad565b348015620002af57600080fd5b50602754620001f3906001600160a01b031681565b348015620002d157600080fd5b506200022462000a5b565b348015620002e957600080fd5b50620001a1620002fb366004620025e7565b62000b4e565b3480156200030e57600080fd5b50620002246200032036600462002664565b62000c4f565b3480156200033357600080fd5b50620001836200034536600462002774565b62000cdc565b3480156200035857600080fd5b50620001836200036a3660046200285a565b62000e82565b3480156200037d57600080fd5b50620001836200038f36600462002774565b62000fe1565b348015620003a257600080fd5b50620001f3620003b4366004620028aa565b6024602052600090815260409020546001600160a01b031681565b348015620003dc57600080fd5b50620001a1620003ee366004620028aa565b62001469565b3480156200040157600080fd5b506200040b600081565b60405160ff9091168152602001620001ad565b3480156200042b57600080fd5b50620001f36200043d366004620028c4565b620014ae565b3480156200045057600080fd5b506022546200046790610100900463ffffffff1681565b60405163ffffffff9091168152602001620001ad565b3480156200048a57600080fd5b50602654620001f3906001600160a01b031681565b62000183620004b036600462002977565b620015c5565b348015620004c357600080fd5b506200018362001771565b348015620004db57600080fd5b5062000467600081565b348015620004f257600080fd5b506200022462000504366004620028aa565b60236020526000908152604090205481565b3480156200052357600080fd5b506200040b600181565b60225460ff16156200055c5760405162461bcd60e51b81526004016200055390620029de565b60405180910390fd5b60225463ffffffff610100909104811690861603620005e45760405162461bcd60e51b815260206004820152603d60248201527f506f6c79676f6e5a6b45564d4272696467653a3a62726964676541737365743a60448201527f2044657374696e6174696f6e2063616e6e6f7420626520697473656c66000000606482015260840162000553565b60008060606001600160a01b03891662000687578534146200067d5760405162461bcd60e51b8152602060048201526044602482018190527f506f6c79676f6e5a6b45564d4272696467653a3a62726964676541737365743a908201527f20416d6f756e7420646f6573206e6f74206d61746368206d6573736167652e76606482015263616c756560e01b608482015260a40162000553565b60009150620008e9565b6001600160a01b03808a1660009081526025602090815260409182902082518084019093525463ffffffff81168352640100000000900490921691810182905290156200074657604051632770a7eb60e21b81526001600160a01b038b1690639dc29fac90620006fe9033908b9060040162002a46565b600060405180830381600087803b1580156200071957600080fd5b505af11580156200072e573d6000803e3d6000fd5b505050508060200151935080600001519250620008e7565b84156200075b576200075b8a888888620017a8565b620007726001600160a01b038b1633308a62001bcc565b899350602260019054906101000a900463ffffffff169250896001600160a01b03166306fdde036040518163ffffffff1660e01b8152600401600060405180830381865afa158015620007c9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620007f3919081019062002ada565b8a6001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa15801562000832573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200085c919081019062002ada565b8b6001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200089b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620008c1919062002b12565b604051602001620008d59392919062002b60565b60405160208183030381529060405291505b505b7f501781209a1f8899323b96b4ef08b168df93e0a90c673d1e4cce39366cb62f9b600083858b8b8b876021546040516200092b98979695949392919062002b9d565b60405180910390a16200095662000950600084868c8c8c888051906020012062000c4f565b62001c39565b6026546001600160a01b03166333d6247d6200097162000a5b565b6040518263ffffffff1660e01b81526004016200099091815260200190565b600060405180830381600087803b158015620009ab57600080fd5b505af1158015620009c0573d6000803e3d6000fd5b50505050505050505050505050565b6027546001600160a01b03163314620009fc5760405162461bcd60e51b8152600401620005539062002c0a565b62000a0662001d8a565b565b600060246000848460405160200162000a2392919062002c67565b60408051601f19818403018152918152815160209283012083529082019290925201600020546001600160a01b031690505b92915050565b602154600090819081805b602081101562000b45578260011660010362000ac6576001816020811062000a925762000a9262002c91565b0154604080516020810192909252810185905260600160405160208183030381529060405280519060200120935062000af3565b60408051602081018690529081018390526060016040516020818303038152906040528051906020012093505b62000b0060028462002cd3565b6040805160208101859052908101849052909350606001604051602081830303815290604052805190602001209150808062000b3c9062002cea565b91505062000a66565b50919392505050565b6000846001600160401b038416825b602081101562000c40578160011660010362000bca5786818151811062000b885762000b8862002c91565b60200260200101518360405160200162000bac929190918252602082015260400190565b60405160208183030381529060405280519060200120925062000c1c565b8287828151811062000be05762000be062002c91565b602002602001015160405160200162000c03929190918252602082015260400190565b6040516020818303038152906040528051906020012092505b62000c2960028362002cd3565b91508062000c378162002cea565b91505062000b5d565b5050821490505b949350505050565b6040516001600160f81b031960f889901b1660208201526001600160e01b031960e088811b821660218401526001600160601b0319606089811b821660258601529188901b909216603984015285901b16603d8201526051810183905260718101829052600090609101604051602081830303815290604052805190602001209050979650505050505050565b60225460ff161562000d025760405162461bcd60e51b81526004016200055390620029de565b62000d188a8a8a8a8a8a8a8a8a8a600162001de8565b62000d298963ffffffff1662002073565b6000836001600160a01b03168387898560405160240162000d4d9392919062002d06565b60408051601f198184030181529181526020820180516001600160e01b0316630c035af960e11b1790525162000d84919062002d41565b60006040518083038185875af1925050503d806000811462000dc3576040519150601f19603f3d011682016040523d82523d6000602084013e62000dc8565b606091505b505090508062000e345760405162461bcd60e51b815260206004820152603060248201527f506f6c79676f6e5a6b45564d4272696467653a3a636c61696d4d65737361676560448201526f0e8813595cdcd859d94819985a5b195960821b606482015260840162000553565b7f25308c93ceeed162da955b3f7ce3e3f93606579e40fb92029faa9efe275459838a8888878760405162000e6d95949392919062002d5f565b60405180910390a15050505050505050505050565b600054610100900460ff161580801562000ea35750600054600160ff909116105b8062000ebf5750303b15801562000ebf575060005460ff166001145b62000f245760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840162000553565b6000805460ff19166001179055801562000f48576000805461ff0019166101001790555b6022805463ffffffff86166101000264ffffffff0019909116179055602680546001600160a01b038086166001600160a01b0319928316179092556027805492851692909116919091179055801562000fdb576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b60225460ff1615620010075760405162461bcd60e51b81526004016200055390620029de565b6200101d8a8a8a8a8a8a8a8a8a8a600062001de8565b6200102e8963ffffffff1662002073565b6001600160a01b0385166200112557604080516000808252602082019092526001600160a01b03851690849060405162001069919062002d41565b60006040518083038185875af1925050503d8060008114620010a8576040519150601f19603f3d011682016040523d82523d6000602084013e620010ad565b606091505b50509050806200111e5760405162461bcd60e51b815260206004820152603560248201527f506f6c79676f6e5a6b45564d4272696467653a3a636c61696d41737365743a20604482015274115d1a195c881d1c985b9cd9995c8819985a5b1959605a1b606482015260840162000553565b506200141c565b60225463ffffffff6101009091048116908716036200115a57620011546001600160a01b0386168484620020b5565b6200141c565b600086866040516020016200117192919062002c67565b60408051601f198184030181529181528151602092830120600081815260249093529120549091506001600160a01b031680620013b457600080600085806020019051810190620011c3919062002d96565b925092509250600085848484604051620011dd9062002399565b620011eb9392919062002b60565b8190604051809103906000f59050801580156200120c573d6000803e3d6000fd5b506040516340c10f1960e01b81529091506001600160a01b038216906340c10f199062001240908c908c9060040162002a46565b600060405180830381600087803b1580156200125b57600080fd5b505af115801562001270573d6000803e3d6000fd5b50505050806024600088815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060405180604001604052808d63ffffffff1681526020018c6001600160a01b031681525060256000836001600160a01b03166001600160a01b0316815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a8154816001600160a01b0302191690836001600160a01b031602179055509050507fccd7715648d1f2bb13e158f96b5b6c3aeda555d4cb87112e274a6f28bc571d598c8c83604051620013a29392919063ffffffff9390931683526001600160a01b03918216602084015216604082015260600190565b60405180910390a15050505062001419565b6040516340c10f1960e01b81526001600160a01b038216906340c10f1990620013e4908890889060040162002a46565b600060405180830381600087803b158015620013ff57600080fd5b505af115801562001414573d6000803e3d6000fd5b505050505b50505b7f25308c93ceeed162da955b3f7ce3e3f93606579e40fb92029faa9efe2754598389878786866040516200145595949392919062002d5f565b60405180910390a150505050505050505050565b6000806200147a6101008462002cd3565b905060006200148c6101008562002e0b565b60009283526023602052604090922054600190921b9182169091149392505050565b6000808888604051602001620014c692919062002c67565b604051602081830303815290604052805190602001209050600060ff60f81b308360405180602001620014f99062002399565b601f1982820381018352601f90910116604081905262001526908d908d908d908d908d9060200162002e4b565b60408051601f198184030181529082905262001546929160200162002e8c565b604051602081830303815290604052805190602001206040516020016200159f94939291906001600160f81b031994909416845260609290921b6001600160601b03191660018401526015830152603582015260550190565b60408051808303601f1901815291905280516020909101209a9950505050505050505050565b60225460ff1615620015eb5760405162461bcd60e51b81526004016200055390620029de565b60225463ffffffff610100909104811690841603620016735760405162461bcd60e51b815260206004820152603f60248201527f506f6c79676f6e5a6b45564d4272696467653a3a6272696467654d657373616760448201527f653a2044657374696e6174696f6e2063616e6e6f7420626520697473656c6600606482015260840162000553565b7f501781209a1f8899323b96b4ef08b168df93e0a90c673d1e4cce39366cb62f9b6001602260019054906101000a900463ffffffff163386863487602154604051620016c798979695949392919062002b9d565b60405180910390a1620016fe620009506001602260019054906101000a900463ffffffff1633878734888051906020012062000c4f565b6026546001600160a01b03166333d6247d6200171962000a5b565b6040518263ffffffff1660e01b81526004016200173891815260200190565b600060405180830381600087803b1580156200175357600080fd5b505af115801562001768573d6000803e3d6000fd5b50505050505050565b6027546001600160a01b031633146200179e5760405162461bcd60e51b8152600401620005539062002c0a565b62000a06620020d7565b6000620017eb83838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506200218692505050565b9050632afa533160e01b6001600160e01b0319821601620019e05760008080808080806200181d896004818d62002ebf565b8101906200182c919062002eeb565b9650965096509650965096509650336001600160a01b0316876001600160a01b0316146200186e5760405162461bcd60e51b8152600401620005539062002f46565b6001600160a01b0386163014620018995760405162461bcd60e51b8152600401620005539062002fa3565b8a85146200190c5760405162461bcd60e51b815260206004820152603960248201527f506f6c79676f6e5a6b45564d4272696467653a3a5f7065726d69743a205065726044820152780dad2e840c2dadeeadce840c8decae640dcdee840dac2e8c6d603b1b606482015260840162000553565b604080516001600160a01b0389811660248301528881166044830152606482018890526084820187905260ff861660a483015260c4820185905260e48083018590528351808403909101815261010490920183526020820180516001600160e01b031663d505accf60e01b1790529151918e16916200198c919062002d41565b6000604051808303816000865af19150503d8060008114620019cb576040519150601f19603f3d011682016040523d82523d6000602084013e620019d0565b606091505b5050505050505050505062001bc5565b6001600160e01b031981166323f2ebc360e21b1462001a565760405162461bcd60e51b815260206004820152602b60248201527f506f6c79676f6e5a6b45564d4272696467653a3a5f7065726d69743a204e6f7460448201526a081d985b1a590818d85b1b60aa1b606482015260840162000553565b60008080808080808062001a6e8a6004818e62002ebf565b81019062001a7d919062003005565b97509750975097509750975097509750336001600160a01b0316886001600160a01b03161462001ac15760405162461bcd60e51b8152600401620005539062002f46565b6001600160a01b038716301462001aec5760405162461bcd60e51b8152600401620005539062002fa3565b604080516001600160a01b038a811660248301528981166044830152606482018990526084820188905286151560a483015260ff861660c483015260e482018590526101048083018590528351808403909101815261012490920183526020820180516001600160e01b03166323f2ebc360e21b1790529151918f169162001b75919062002d41565b6000604051808303816000865af19150503d806000811462001bb4576040519150601f19603f3d011682016040523d82523d6000602084013e62001bb9565b606091505b50505050505050505050505b5050505050565b6040516001600160a01b038085166024830152831660448201526064810182905262000fdb9085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526200218d565b80600162001c4a602060026200318e565b62001c5691906200319c565b6021541062001cbb5760405162461bcd60e51b815260206004820152602a60248201527f4465706f736974436f6e74726163743a5f6465706f7369743a204d65726b6c65604482015269081d1c995948199d5b1b60b21b606482015260840162000553565b60016021600082825462001cd09190620031b6565b909155505060215460005b602081101562001d7a578160011660010362001d1057826001826020811062001d085762001d0862002c91565b015550505050565b6001816020811062001d265762001d2662002c91565b0154604080516020810192909252810184905260600160405160208183030381529060405280519060200120925060028262001d63919062002cd3565b91508062001d718162002cea565b91505062001cdb565b5062001d85620031d1565b505050565b60225460ff161562001db05760405162461bcd60e51b81526004016200055390620029de565b6022805460ff191660011790556040517f2261efe5aef6fedc1fd1550b25facc9181745623049c7901287030b9ad1a549790600090a1565b62001df98a63ffffffff1662001469565b1562001e505760405162461bcd60e51b815260206004820152603060248201526000805160206200477983398151915260448201526f08105b1c9958591e4818db185a5b595960821b606482015260840162000553565b6026546040805160208082018d90528183018c9052825180830384018152606083019384905280519101206312bd9b1960e11b90925260648101919091526000916001600160a01b03169063257b3632906084016020604051808303816000875af115801562001ec4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001eea9190620031e7565b90508060000362001f4d5760405162461bcd60e51b81526020600482015260376024820152600080516020620047798339815191526044820152760811db1bd8985b115e1a5d149bdbdd081a5b9d985b1a59604a1b606482015260840162000553565b60225463ffffffff878116610100909204161462001fcf5760405162461bcd60e51b815260206004820152604360248201526000805160206200477983398151915260448201527f2044657374696e6174696f6e206e6574776f726b20646f6573206e6f74206d616064820152620e8c6d60eb1b608482015260a40162000553565b602254600090610100900463ffffffff1662001fed57508862001ff0565b50895b6200201b6200200c848b8b8b8b8b8b8051906020012062000c4f565b8e8e63ffffffff168462000b4e565b620009c05760405162461bcd60e51b81526020600482015260326024820152600080516020620047798339815191526044820152711024b73b30b634b21039b6ba10383937b7b360711b606482015260840162000553565b6000620020836101008362002cd3565b90506000620020956101008462002e0b565b6000928352602360205260409092208054600190931b9092179091555050565b62001d858363a9059cbb60e01b848460405160240162001c0192919062002a46565b60225460ff16620021515760405162461bcd60e51b815260206004820152603b60248201527f456d657267656e63794d616e616765723a3a6966456d657267656e637953746160448201527f74653a206f6e6c7920696620656d657267656e63792073746174650000000000606482015260840162000553565b6022805460ff191690556040517f1e5e34eea33501aecf2ebec9fe0e884a40804275ea7fe10b2ba084c8374308b390600090a1565b6020015190565b6000620021e4826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316620022669092919063ffffffff16565b80519091501562001d85578080602001905181019062002205919062003201565b62001d855760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840162000553565b606062000c47848460008585600080866001600160a01b0316858760405162002290919062002d41565b60006040518083038185875af1925050503d8060008114620022cf576040519150601f19603f3d011682016040523d82523d6000602084013e620022d4565b606091505b5091509150620022e787838387620022f2565b979650505050505050565b60608315620023665782516000036200235e576001600160a01b0385163b6200235e5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640162000553565b508162000c47565b62000c4783838151156200237d5781518083602001fd5b8060405162461bcd60e51b815260040162000553919062003221565b611542806200323783390190565b6001600160a01b0381168114620023bd57600080fd5b50565b8035620023cd81620023a7565b919050565b803563ffffffff81168114620023cd57600080fd5b60008083601f840112620023fa57600080fd5b5081356001600160401b038111156200241257600080fd5b6020830191508360208285010111156200242b57600080fd5b9250929050565b60008060008060008060a087890312156200244c57600080fd5b86356200245981620023a7565b95506200246960208801620023d2565b945060408701356200247b81620023a7565b93506060870135925060808701356001600160401b038111156200249e57600080fd5b620024ac89828a01620023e7565b979a9699509497509295939492505050565b60008060408385031215620024d257600080fd5b620024dd83620023d2565b91506020830135620024ef81620023a7565b809150509250929050565b6000602082840312156200250d57600080fd5b81356200251a81620023a7565b9392505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171562002562576200256262002521565b604052919050565b600082601f8301126200257c57600080fd5b813560206001600160401b038211156200259a576200259a62002521565b8160051b620025ab82820162002537565b9283528481018201928281019087851115620025c657600080fd5b83870192505b84831015620022e757823582529183019190830190620025cc565b60008060008060808587031215620025fe57600080fd5b8435935060208501356001600160401b03808211156200261d57600080fd5b6200262b888389016200256a565b94506040870135915080821682146200264357600080fd5b509396929550929360600135925050565b60ff81168114620023bd57600080fd5b600080600080600080600060e0888a0312156200268057600080fd5b87356200268d8162002654565b96506200269d60208901620023d2565b95506040880135620026af81620023a7565b9450620026bf60608901620023d2565b93506080880135620026d181620023a7565b9699959850939692959460a0840135945060c09093013592915050565b60006001600160401b038211156200270a576200270a62002521565b50601f01601f191660200190565b600082601f8301126200272a57600080fd5b8135620027416200273b82620026ee565b62002537565b8181528460208386010111156200275757600080fd5b816020850160208301376000918101602001919091529392505050565b6000806000806000806000806000806101408b8d0312156200279557600080fd5b8a356001600160401b0380821115620027ad57600080fd5b620027bb8e838f016200256a565b9b50620027cb60208e01620023d2565b9a5060408d0135995060608d01359850620027e960808e01620023d2565b9750620027f960a08e01620023c0565b96506200280960c08e01620023d2565b95506200281960e08e01620023c0565b94506101008d013593506101208d01359150808211156200283957600080fd5b50620028488d828e0162002718565b9150509295989b9194979a5092959850565b6000806000606084860312156200287057600080fd5b6200287b84620023d2565b925060208401356200288d81620023a7565b915060408401356200289f81620023a7565b809150509250925092565b600060208284031215620028bd57600080fd5b5035919050565b600080600080600080600060a0888a031215620028e057600080fd5b620028eb88620023d2565b96506020880135620028fd81620023a7565b955060408801356001600160401b03808211156200291a57600080fd5b620029288b838c01620023e7565b909750955060608a01359150808211156200294257600080fd5b50620029518a828b01620023e7565b9094509250506080880135620029678162002654565b8091505092959891949750929550565b6000806000606084860312156200298d57600080fd5b6200299884620023d2565b92506020840135620029aa81620023a7565b915060408401356001600160401b03811115620029c657600080fd5b620029d48682870162002718565b9150509250925092565b60208082526042908201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960408201527f53746174653a206f6e6c79206966206e6f7420656d657267656e637920737461606082015261746560f01b608082015260a00190565b6001600160a01b03929092168252602082015260400190565b60005b8381101562002a7c57818101518382015260200162002a62565b8381111562000fdb5750506000910152565b600082601f83011262002aa057600080fd5b815162002ab16200273b82620026ee565b81815284602083860101111562002ac757600080fd5b62000c4782602083016020870162002a5f565b60006020828403121562002aed57600080fd5b81516001600160401b0381111562002b0457600080fd5b62000c478482850162002a8e565b60006020828403121562002b2557600080fd5b81516200251a8162002654565b6000815180845262002b4c81602086016020860162002a5f565b601f01601f19169290920160200192915050565b60608152600062002b75606083018662002b32565b828103602084015262002b89818662002b32565b91505060ff83166040830152949350505050565b60ff8916815263ffffffff88811660208301526001600160a01b03888116604084015287821660608401528616608083015260a0820185905261010060c0830181905260009162002bf18483018762002b32565b925080851660e085015250509998505050505050505050565b6020808252603a908201527f506f6c79676f6e5a6b45564d3a3a6f6e6c79506f6c79676f6e5a6b45564d3a2060408201527f6f6e6c7920506f6c79676f6e5a6b45564d20636f6e7472616374000000000000606082015260800190565b60e09290921b6001600160e01b031916825260601b6001600160601b031916600482015260180190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60008262002ce55762002ce562002ca7565b500490565b60006001820162002cff5762002cff62002cbd565b5060010190565b6001600160a01b038416815263ffffffff8316602082015260606040820181905260009062002d389083018462002b32565b95945050505050565b6000825162002d5581846020870162002a5f565b9190910192915050565b63ffffffff95861681529390941660208401526001600160a01b039182166040840152166060820152608081019190915260a00190565b60008060006060848603121562002dac57600080fd5b83516001600160401b038082111562002dc457600080fd5b62002dd28783880162002a8e565b9450602086015191508082111562002de957600080fd5b5062002df88682870162002a8e565b92505060408401516200289f8162002654565b60008262002e1d5762002e1d62002ca7565b500690565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60608152600062002e6160608301878962002e22565b828103602084015262002e7681868862002e22565b91505060ff831660408301529695505050505050565b6000835162002ea081846020880162002a5f565b83519083019062002eb681836020880162002a5f565b01949350505050565b6000808585111562002ed057600080fd5b8386111562002ede57600080fd5b5050820193919092039150565b600080600080600080600060e0888a03121562002f0757600080fd5b873562002f1481620023a7565b9650602088013562002f2681620023a7565b955060408801359450606088013593506080880135620026d18162002654565b6020808252603c908201527f506f6c79676f6e5a6b45564d4272696467653a3a5f7065726d69743a2050657260408201527f6d6974206f776e6572206d757374206265207468652073656e64657200000000606082015260800190565b60208082526033908201527f506f6c79676f6e5a6b45564d4272696467653a3a5f7065726d69743a205370656040820152726e646572206d7573742062652027746869732760681b606082015260800190565b8015158114620023bd57600080fd5b600080600080600080600080610100898b0312156200302357600080fd5b88356200303081620023a7565b975060208901356200304281620023a7565b965060408901359550606089013594506080890135620030628162002ff6565b935060a0890135620030748162002654565b979a969950949793969295929450505060c08201359160e0013590565b600181815b80851115620030d2578160001904821115620030b657620030b662002cbd565b80851615620030c457918102915b93841c939080029062003096565b509250929050565b600082620030eb5750600162000a55565b81620030fa5750600062000a55565b81600181146200311357600281146200311e576200313e565b600191505062000a55565b60ff84111562003132576200313262002cbd565b50506001821b62000a55565b5060208310610133831016604e8410600b841016171562003163575081810a62000a55565b6200316f838362003091565b806000190482111562003186576200318662002cbd565b029392505050565b60006200251a8383620030da565b600082821015620031b157620031b162002cbd565b500390565b60008219821115620031cc57620031cc62002cbd565b500190565b634e487b7160e01b600052600160045260246000fd5b600060208284031215620031fa57600080fd5b5051919050565b6000602082840312156200321457600080fd5b81516200251a8162002ff6565b6020815260006200251a602083018462002b3256fe60c06040523480156200001157600080fd5b5060405162001542380380620015428339810160408190526200003491620002ad565b82826003620000448382620003c1565b506004620000538282620003c1565b5050600580546001600160a81b0319163360ff60a01b191617600160a01b60ff851602179055504660808190526200008b9062000098565b60a052506200048d915050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f620000c562000146565b805160209182012060408051808201825260018152603160f81b90840152805192830193909352918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060820152608081018390523060a082015260c001604051602081830303815290604052805190602001209050919050565b606060038054620001579062000332565b80601f0160208091040260200160405190810160405280929190818152602001828054620001859062000332565b8015620001d65780601f10620001aa57610100808354040283529160200191620001d6565b820191906000526020600020905b815481529060010190602001808311620001b857829003601f168201915b5050505050905090565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200020857600080fd5b81516001600160401b0380821115620002255762000225620001e0565b604051601f8301601f19908116603f01168101908282118183101715620002505762000250620001e0565b816040528381526020925086838588010111156200026d57600080fd5b600091505b8382101562000291578582018301518183018401529082019062000272565b83821115620002a35760008385830101525b9695505050505050565b600080600060608486031215620002c357600080fd5b83516001600160401b0380821115620002db57600080fd5b620002e987838801620001f6565b945060208601519150808211156200030057600080fd5b506200030f86828701620001f6565b925050604084015160ff811681146200032757600080fd5b809150509250925092565b600181811c908216806200034757607f821691505b6020821081036200036857634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620003bc57600081815260208120601f850160051c81016020861015620003975750805b601f850160051c820191505b81811015620003b857828155600101620003a3565b5050505b505050565b81516001600160401b03811115620003dd57620003dd620001e0565b620003f581620003ee845462000332565b846200036e565b602080601f8311600181146200042d5760008415620004145750858301515b600019600386901b1c1916600185901b178555620003b8565b600085815260208120601f198616915b828110156200045e578886015182559484019460019091019084016200043d565b50858210156200047d5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60805160a051611088620004ba60003960006104690152600081816102f9015261043301526110886000f3fe608060405234801561001057600080fd5b50600436106101375760003560e01c806370a08231116100b8578063a457c2d71161007c578063a457c2d7146102ce578063a9059cbb146102e1578063cd0d0096146102f4578063d505accf1461031b578063dd62ed3e1461032e578063ffa1ad741461034157600080fd5b806370a082311461023f5780637ecebe001461026857806395d89b41146102885780639dc29fac14610290578063a3c573eb146102a357600080fd5b806330adf81f116100ff57806330adf81f146101c9578063313ce567146101f05780633644e5151461020f578063395093511461021757806340c10f191461022a57600080fd5b806306fdde031461013c578063095ea7b31461015a57806318160ddd1461017d57806320606b701461018f57806323b872dd146101b6575b600080fd5b610144610361565b6040516101519190610dc2565b60405180910390f35b61016d610168366004610e33565b6103f3565b6040519015158152602001610151565b6002545b604051908152602001610151565b6101817f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81565b61016d6101c4366004610e5d565b61040b565b6101817f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b600554600160a01b900460ff1660405160ff9091168152602001610151565b61018161042f565b61016d610225366004610e33565b61048b565b61023d610238366004610e33565b6104ad565b005b61018161024d366004610e99565b6001600160a01b031660009081526020819052604090205490565b610181610276366004610e99565b60066020526000908152604090205481565b6101446104ee565b61023d61029e366004610e33565b6104fd565b6005546102b6906001600160a01b031681565b6040516001600160a01b039091168152602001610151565b61016d6102dc366004610e33565b610531565b61016d6102ef366004610e33565b6105ac565b6101817f000000000000000000000000000000000000000000000000000000000000000081565b61023d610329366004610ebb565b6105ba565b61018161033c366004610f2e565b6107f5565b610144604051806040016040528060018152602001603160f81b81525081565b60606003805461037090610f61565b80601f016020809104026020016040519081016040528092919081815260200182805461039c90610f61565b80156103e95780601f106103be576101008083540402835291602001916103e9565b820191906000526020600020905b8154815290600101906020018083116103cc57829003601f168201915b5050505050905090565b600033610401818585610820565b5060019392505050565b600033610419858285610945565b6104248585856109bf565b506001949350505050565b60007f000000000000000000000000000000000000000000000000000000000000000046146104665761046146610b51565b905090565b507f000000000000000000000000000000000000000000000000000000000000000090565b60003361040181858561049e83836107f5565b6104a89190610fb1565b610820565b6005546001600160a01b031633146104e05760405162461bcd60e51b81526004016104d790610fc9565b60405180910390fd5b6104ea8282610bfd565b5050565b60606004805461037090610f61565b6005546001600160a01b031633146105275760405162461bcd60e51b81526004016104d790610fc9565b6104ea8282610caa565b6000338161053f82866107f5565b90508381101561059f5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016104d7565b6104248286868403610820565b6000336104018185856109bf565b834211156106165760405162461bcd60e51b8152602060048201526024808201527f546f6b656e577261707065643a3a7065726d69743a20457870697265642070656044820152631c9b5a5d60e21b60648201526084016104d7565b6001600160a01b038716600090815260066020526040812080547f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918a918a918a91908661066383611019565b909155506040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e00160405160208183030381529060405280519060200120905060006106c161042f565b60405161190160f01b602082015260228101919091526042810183905260620160408051601f198184030181528282528051602091820120600080855291840180845281905260ff89169284019290925260608301879052608083018690529092509060019060a0016020604051602081039080840390855afa15801561074c573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116158015906107825750896001600160a01b0316816001600160a01b0316145b6107de5760405162461bcd60e51b815260206004820152602760248201527f546f6b656e577261707065643a3a7065726d69743a20496e76616c6964207369604482015266676e617475726560c81b60648201526084016104d7565b6107e98a8a8a610820565b50505050505050505050565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166108825760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016104d7565b6001600160a01b0382166108e35760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016104d7565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b600061095184846107f5565b905060001981146109b957818110156109ac5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016104d7565b6109b98484848403610820565b50505050565b6001600160a01b038316610a235760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016104d7565b6001600160a01b038216610a855760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016104d7565b6001600160a01b03831660009081526020819052604090205481811015610afd5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016104d7565b6001600160a01b0384811660008181526020818152604080832087870390559387168083529184902080548701905592518581529092600080516020611033833981519152910160405180910390a36109b9565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f610b7c610361565b805160209182012060408051808201825260018152603160f81b90840152805192830193909352918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060820152608081018390523060a082015260c001604051602081830303815290604052805190602001209050919050565b6001600160a01b038216610c535760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016104d7565b8060026000828254610c659190610fb1565b90915550506001600160a01b03821660008181526020818152604080832080548601905551848152600080516020611033833981519152910160405180910390a35050565b6001600160a01b038216610d0a5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016104d7565b6001600160a01b03821660009081526020819052604090205481811015610d7e5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016104d7565b6001600160a01b0383166000818152602081815260408083208686039055600280548790039055518581529192916000805160206110338339815191529101610938565b600060208083528351808285015260005b81811015610def57858101830151858201604001528201610dd3565b81811115610e01576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b0381168114610e2e57600080fd5b919050565b60008060408385031215610e4657600080fd5b610e4f83610e17565b946020939093013593505050565b600080600060608486031215610e7257600080fd5b610e7b84610e17565b9250610e8960208501610e17565b9150604084013590509250925092565b600060208284031215610eab57600080fd5b610eb482610e17565b9392505050565b600080600080600080600060e0888a031215610ed657600080fd5b610edf88610e17565b9650610eed60208901610e17565b95506040880135945060608801359350608088013560ff81168114610f1157600080fd5b9699959850939692959460a0840135945060c09093013592915050565b60008060408385031215610f4157600080fd5b610f4a83610e17565b9150610f5860208401610e17565b90509250929050565b600181811c90821680610f7557607f821691505b602082108103610f9557634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60008219821115610fc457610fc4610f9b565b500190565b60208082526030908201527f546f6b656e577261707065643a3a6f6e6c794272696467653a204e6f7420506f60408201526f6c79676f6e5a6b45564d42726964676560801b606082015260800190565b60006001820161102b5761102b610f9b565b506001019056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212208b7986f78e961ad6c0885b86b24ce427045be98073c1f3d7fe18180542ab873564736f6c634300080f0033506f6c79676f6e5a6b45564d4272696467653a3a5f7665726966794c6561663aa26469706673582212207321963add10aa42fbf70097691018c23164a96132c6cd71e46023fffa7d461764736f6c634300080f0033", "storage": { "0x0000000000000000000000000000000000000000000000000000000000000000": "0x01", "0x0000000000000000000000000000000000000000000000000000000000000022": "0x0100", @@ -29,11 +29,16 @@ "balance": "0", "nonce": "1", "address": "0xae4bb80be56b819606589de61d5ec3b522eeb032", - "bytecode": "0x608060405234801561001057600080fd5b506004361061004c5760003560e01c806301fd904414610051578063257b36321461006d57806333d6247d1461008d578063a3c573eb146100a2575b600080fd5b61005a60015481565b6040519081526020015b60405180910390f35b61005a61007b366004610164565b60006020819052908152604090205481565b6100a061009b366004610164565b6100cd565b005b6002546100b5906001600160a01b031681565b6040516001600160a01b039091168152602001610064565b6002546001600160a01b0316331461015f5760405162461bcd60e51b815260206004820152604560248201527f506f6c79676f6e5a6b45564d476c6f62616c45786974526f6f744c323a3a757060448201527f6461746545786974526f6f743a204f6e6c7920506f6c79676f6e5a6b45564d42606482015264726964676560d81b608482015260a40160405180910390fd5b600155565b60006020828403121561017657600080fd5b503591905056fea26469706673582212203d6a7f66369fc06c0d8b9ca38eabcd1a1bdd000df9e10846e604066a7c3c182f64736f6c634300080f0033", + "bytecode": "0x608060405234801561001057600080fd5b506004361061004c5760003560e01c806301fd904414610051578063257b36321461006d57806333d6247d1461008d578063a3c573eb146100a2575b600080fd5b61005a60015481565b6040519081526020015b60405180910390f35b61005a61007b366004610164565b60006020819052908152604090205481565b6100a061009b366004610164565b6100cd565b005b6002546100b5906001600160a01b031681565b6040516001600160a01b039091168152602001610064565b6002546001600160a01b0316331461015f5760405162461bcd60e51b815260206004820152604560248201527f506f6c79676f6e5a6b45564d476c6f62616c45786974526f6f744c323a3a757060448201527f6461746545786974526f6f743a204f6e6c7920506f6c79676f6e5a6b45564d42606482015264726964676560d81b608482015260a40160405180910390fd5b600155565b60006020828403121561017657600080fd5b503591905056fea2646970667358221220515fd6c3d86946bd7f5a4ef86115f8c7ba072b8c318ac2c46e1526fb50a66c3364736f6c634300080f0033", "storage": { "0x0000000000000000000000000000000000000000000000000000000000000002": "0x9d98deabc42dd696deb9e40b4f1cab7ddbf55988" }, "contractName": "PolygonZkEVMGlobalExitRootL2" } + ], + "rawTxs": [ + "0xf902768080839896808080b90266608060405234801561001057600080fd5b5060405161024638038061024683398101604081905261002f91610054565b600280546001600160a01b0319166001600160a01b0392909216919091179055610084565b60006020828403121561006657600080fd5b81516001600160a01b038116811461007d57600080fd5b9392505050565b6101b3806100936000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806301fd904414610051578063257b36321461006d57806333d6247d1461008d578063a3c573eb146100a2575b600080fd5b61005a60015481565b6040519081526020015b60405180910390f35b61005a61007b366004610164565b60006020819052908152604090205481565b6100a061009b366004610164565b6100cd565b005b6002546100b5906001600160a01b031681565b6040516001600160a01b039091168152602001610064565b6002546001600160a01b0316331461015f5760405162461bcd60e51b815260206004820152604560248201527f506f6c79676f6e5a6b45564d476c6f62616c45786974526f6f744c323a3a757060448201527f6461746545786974526f6f743a204f6e6c7920506f6c79676f6e5a6b45564d42606482015264726964676560d81b608482015260a40160405180910390fd5b600155565b60006020828403121561017657600080fd5b503591905056fea2646970667358221220515fd6c3d86946bd7f5a4ef86115f8c7ba072b8c318ac2c46e1526fb50a66c3364736f6c634300080f00330000000000000000000000009d98deabc42dd696deb9e40b4f1cab7ddbf559888203e8808062c7b6ed3f97f48cb0c909b6fc5fa0bda9ae0392c5e3c6abb883afff10d8843d354c515eb025b1ea82e17a389a23d5d4b0b6dbc45cbf215d181958094d03c4b11b", + "0xf947fe0180839896808080b947ee608060405234801561001057600080fd5b506147ce806100206000396000f3fe608060405260043610620001675760003560e01c80637b6323c111620000c5578063d02103ca1162000078578063d02103ca146200047d578063d96a15f7146200049f578063dbc1697614620004b6578063ed6be5c914620004ce578063ee25560b14620004e5578063ff634ed7146200051657600080fd5b80637b6323c1146200037057806381b1c17414620003955780639e34070f14620003cf578063a08e8a0814620003f4578063aaa13cc2146200041e578063bab161bf146200044357600080fd5b806334ac9cf2116200011e57806334ac9cf214620002a25780633ae0504714620002c45780633da8168214620002dc5780633e1970431462000301578063463855491462000326578063647c576c146200034b57600080fd5b80630871e971146200016c57806315064c9614620001855780632072f6c514620001b657806322e95f2c14620001ce5780632dfdf0b5146200020c578063318aee3d1462000233575b600080fd5b620001836200017d36600462002432565b6200052d565b005b3480156200019257600080fd5b50602254620001a19060ff1681565b60405190151581526020015b60405180910390f35b348015620001c357600080fd5b5062000183620009cf565b348015620001db57600080fd5b50620001f3620001ed366004620024be565b62000a08565b6040516001600160a01b039091168152602001620001ad565b3480156200021957600080fd5b506200022460215481565b604051908152602001620001ad565b3480156200024057600080fd5b506200027d62000252366004620024fa565b60256020526000908152604090205463ffffffff81169064010000000090046001600160a01b031682565b6040805163ffffffff90931683526001600160a01b03909116602083015201620001ad565b348015620002af57600080fd5b50602754620001f3906001600160a01b031681565b348015620002d157600080fd5b506200022462000a5b565b348015620002e957600080fd5b50620001a1620002fb366004620025e7565b62000b4e565b3480156200030e57600080fd5b50620002246200032036600462002664565b62000c4f565b3480156200033357600080fd5b50620001836200034536600462002774565b62000cdc565b3480156200035857600080fd5b50620001836200036a3660046200285a565b62000e82565b3480156200037d57600080fd5b50620001836200038f36600462002774565b62000fe1565b348015620003a257600080fd5b50620001f3620003b4366004620028aa565b6024602052600090815260409020546001600160a01b031681565b348015620003dc57600080fd5b50620001a1620003ee366004620028aa565b62001469565b3480156200040157600080fd5b506200040b600081565b60405160ff9091168152602001620001ad565b3480156200042b57600080fd5b50620001f36200043d366004620028c4565b620014ae565b3480156200045057600080fd5b506022546200046790610100900463ffffffff1681565b60405163ffffffff9091168152602001620001ad565b3480156200048a57600080fd5b50602654620001f3906001600160a01b031681565b62000183620004b036600462002977565b620015c5565b348015620004c357600080fd5b506200018362001771565b348015620004db57600080fd5b5062000467600081565b348015620004f257600080fd5b506200022462000504366004620028aa565b60236020526000908152604090205481565b3480156200052357600080fd5b506200040b600181565b60225460ff16156200055c5760405162461bcd60e51b81526004016200055390620029de565b60405180910390fd5b60225463ffffffff610100909104811690861603620005e45760405162461bcd60e51b815260206004820152603d60248201527f506f6c79676f6e5a6b45564d4272696467653a3a62726964676541737365743a60448201527f2044657374696e6174696f6e2063616e6e6f7420626520697473656c66000000606482015260840162000553565b60008060606001600160a01b03891662000687578534146200067d5760405162461bcd60e51b8152602060048201526044602482018190527f506f6c79676f6e5a6b45564d4272696467653a3a62726964676541737365743a908201527f20416d6f756e7420646f6573206e6f74206d61746368206d6573736167652e76606482015263616c756560e01b608482015260a40162000553565b60009150620008e9565b6001600160a01b03808a1660009081526025602090815260409182902082518084019093525463ffffffff81168352640100000000900490921691810182905290156200074657604051632770a7eb60e21b81526001600160a01b038b1690639dc29fac90620006fe9033908b9060040162002a46565b600060405180830381600087803b1580156200071957600080fd5b505af11580156200072e573d6000803e3d6000fd5b505050508060200151935080600001519250620008e7565b84156200075b576200075b8a888888620017a8565b620007726001600160a01b038b1633308a62001bcc565b899350602260019054906101000a900463ffffffff169250896001600160a01b03166306fdde036040518163ffffffff1660e01b8152600401600060405180830381865afa158015620007c9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620007f3919081019062002ada565b8a6001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa15801562000832573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200085c919081019062002ada565b8b6001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200089b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620008c1919062002b12565b604051602001620008d59392919062002b60565b60405160208183030381529060405291505b505b7f501781209a1f8899323b96b4ef08b168df93e0a90c673d1e4cce39366cb62f9b600083858b8b8b876021546040516200092b98979695949392919062002b9d565b60405180910390a16200095662000950600084868c8c8c888051906020012062000c4f565b62001c39565b6026546001600160a01b03166333d6247d6200097162000a5b565b6040518263ffffffff1660e01b81526004016200099091815260200190565b600060405180830381600087803b158015620009ab57600080fd5b505af1158015620009c0573d6000803e3d6000fd5b50505050505050505050505050565b6027546001600160a01b03163314620009fc5760405162461bcd60e51b8152600401620005539062002c0a565b62000a0662001d8a565b565b600060246000848460405160200162000a2392919062002c67565b60408051601f19818403018152918152815160209283012083529082019290925201600020546001600160a01b031690505b92915050565b602154600090819081805b602081101562000b45578260011660010362000ac6576001816020811062000a925762000a9262002c91565b0154604080516020810192909252810185905260600160405160208183030381529060405280519060200120935062000af3565b60408051602081018690529081018390526060016040516020818303038152906040528051906020012093505b62000b0060028462002cd3565b6040805160208101859052908101849052909350606001604051602081830303815290604052805190602001209150808062000b3c9062002cea565b91505062000a66565b50919392505050565b6000846001600160401b038416825b602081101562000c40578160011660010362000bca5786818151811062000b885762000b8862002c91565b60200260200101518360405160200162000bac929190918252602082015260400190565b60405160208183030381529060405280519060200120925062000c1c565b8287828151811062000be05762000be062002c91565b602002602001015160405160200162000c03929190918252602082015260400190565b6040516020818303038152906040528051906020012092505b62000c2960028362002cd3565b91508062000c378162002cea565b91505062000b5d565b5050821490505b949350505050565b6040516001600160f81b031960f889901b1660208201526001600160e01b031960e088811b821660218401526001600160601b0319606089811b821660258601529188901b909216603984015285901b16603d8201526051810183905260718101829052600090609101604051602081830303815290604052805190602001209050979650505050505050565b60225460ff161562000d025760405162461bcd60e51b81526004016200055390620029de565b62000d188a8a8a8a8a8a8a8a8a8a600162001de8565b62000d298963ffffffff1662002073565b6000836001600160a01b03168387898560405160240162000d4d9392919062002d06565b60408051601f198184030181529181526020820180516001600160e01b0316630c035af960e11b1790525162000d84919062002d41565b60006040518083038185875af1925050503d806000811462000dc3576040519150601f19603f3d011682016040523d82523d6000602084013e62000dc8565b606091505b505090508062000e345760405162461bcd60e51b815260206004820152603060248201527f506f6c79676f6e5a6b45564d4272696467653a3a636c61696d4d65737361676560448201526f0e8813595cdcd859d94819985a5b195960821b606482015260840162000553565b7f25308c93ceeed162da955b3f7ce3e3f93606579e40fb92029faa9efe275459838a8888878760405162000e6d95949392919062002d5f565b60405180910390a15050505050505050505050565b600054610100900460ff161580801562000ea35750600054600160ff909116105b8062000ebf5750303b15801562000ebf575060005460ff166001145b62000f245760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840162000553565b6000805460ff19166001179055801562000f48576000805461ff0019166101001790555b6022805463ffffffff86166101000264ffffffff0019909116179055602680546001600160a01b038086166001600160a01b0319928316179092556027805492851692909116919091179055801562000fdb576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b60225460ff1615620010075760405162461bcd60e51b81526004016200055390620029de565b6200101d8a8a8a8a8a8a8a8a8a8a600062001de8565b6200102e8963ffffffff1662002073565b6001600160a01b0385166200112557604080516000808252602082019092526001600160a01b03851690849060405162001069919062002d41565b60006040518083038185875af1925050503d8060008114620010a8576040519150601f19603f3d011682016040523d82523d6000602084013e620010ad565b606091505b50509050806200111e5760405162461bcd60e51b815260206004820152603560248201527f506f6c79676f6e5a6b45564d4272696467653a3a636c61696d41737365743a20604482015274115d1a195c881d1c985b9cd9995c8819985a5b1959605a1b606482015260840162000553565b506200141c565b60225463ffffffff6101009091048116908716036200115a57620011546001600160a01b0386168484620020b5565b6200141c565b600086866040516020016200117192919062002c67565b60408051601f198184030181529181528151602092830120600081815260249093529120549091506001600160a01b031680620013b457600080600085806020019051810190620011c3919062002d96565b925092509250600085848484604051620011dd9062002399565b620011eb9392919062002b60565b8190604051809103906000f59050801580156200120c573d6000803e3d6000fd5b506040516340c10f1960e01b81529091506001600160a01b038216906340c10f199062001240908c908c9060040162002a46565b600060405180830381600087803b1580156200125b57600080fd5b505af115801562001270573d6000803e3d6000fd5b50505050806024600088815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060405180604001604052808d63ffffffff1681526020018c6001600160a01b031681525060256000836001600160a01b03166001600160a01b0316815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a8154816001600160a01b0302191690836001600160a01b031602179055509050507fccd7715648d1f2bb13e158f96b5b6c3aeda555d4cb87112e274a6f28bc571d598c8c83604051620013a29392919063ffffffff9390931683526001600160a01b03918216602084015216604082015260600190565b60405180910390a15050505062001419565b6040516340c10f1960e01b81526001600160a01b038216906340c10f1990620013e4908890889060040162002a46565b600060405180830381600087803b158015620013ff57600080fd5b505af115801562001414573d6000803e3d6000fd5b505050505b50505b7f25308c93ceeed162da955b3f7ce3e3f93606579e40fb92029faa9efe2754598389878786866040516200145595949392919062002d5f565b60405180910390a150505050505050505050565b6000806200147a6101008462002cd3565b905060006200148c6101008562002e0b565b60009283526023602052604090922054600190921b9182169091149392505050565b6000808888604051602001620014c692919062002c67565b604051602081830303815290604052805190602001209050600060ff60f81b308360405180602001620014f99062002399565b601f1982820381018352601f90910116604081905262001526908d908d908d908d908d9060200162002e4b565b60408051601f198184030181529082905262001546929160200162002e8c565b604051602081830303815290604052805190602001206040516020016200159f94939291906001600160f81b031994909416845260609290921b6001600160601b03191660018401526015830152603582015260550190565b60408051808303601f1901815291905280516020909101209a9950505050505050505050565b60225460ff1615620015eb5760405162461bcd60e51b81526004016200055390620029de565b60225463ffffffff610100909104811690841603620016735760405162461bcd60e51b815260206004820152603f60248201527f506f6c79676f6e5a6b45564d4272696467653a3a6272696467654d657373616760448201527f653a2044657374696e6174696f6e2063616e6e6f7420626520697473656c6600606482015260840162000553565b7f501781209a1f8899323b96b4ef08b168df93e0a90c673d1e4cce39366cb62f9b6001602260019054906101000a900463ffffffff163386863487602154604051620016c798979695949392919062002b9d565b60405180910390a1620016fe620009506001602260019054906101000a900463ffffffff1633878734888051906020012062000c4f565b6026546001600160a01b03166333d6247d6200171962000a5b565b6040518263ffffffff1660e01b81526004016200173891815260200190565b600060405180830381600087803b1580156200175357600080fd5b505af115801562001768573d6000803e3d6000fd5b50505050505050565b6027546001600160a01b031633146200179e5760405162461bcd60e51b8152600401620005539062002c0a565b62000a06620020d7565b6000620017eb83838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506200218692505050565b9050632afa533160e01b6001600160e01b0319821601620019e05760008080808080806200181d896004818d62002ebf565b8101906200182c919062002eeb565b9650965096509650965096509650336001600160a01b0316876001600160a01b0316146200186e5760405162461bcd60e51b8152600401620005539062002f46565b6001600160a01b0386163014620018995760405162461bcd60e51b8152600401620005539062002fa3565b8a85146200190c5760405162461bcd60e51b815260206004820152603960248201527f506f6c79676f6e5a6b45564d4272696467653a3a5f7065726d69743a205065726044820152780dad2e840c2dadeeadce840c8decae640dcdee840dac2e8c6d603b1b606482015260840162000553565b604080516001600160a01b0389811660248301528881166044830152606482018890526084820187905260ff861660a483015260c4820185905260e48083018590528351808403909101815261010490920183526020820180516001600160e01b031663d505accf60e01b1790529151918e16916200198c919062002d41565b6000604051808303816000865af19150503d8060008114620019cb576040519150601f19603f3d011682016040523d82523d6000602084013e620019d0565b606091505b5050505050505050505062001bc5565b6001600160e01b031981166323f2ebc360e21b1462001a565760405162461bcd60e51b815260206004820152602b60248201527f506f6c79676f6e5a6b45564d4272696467653a3a5f7065726d69743a204e6f7460448201526a081d985b1a590818d85b1b60aa1b606482015260840162000553565b60008080808080808062001a6e8a6004818e62002ebf565b81019062001a7d919062003005565b97509750975097509750975097509750336001600160a01b0316886001600160a01b03161462001ac15760405162461bcd60e51b8152600401620005539062002f46565b6001600160a01b038716301462001aec5760405162461bcd60e51b8152600401620005539062002fa3565b604080516001600160a01b038a811660248301528981166044830152606482018990526084820188905286151560a483015260ff861660c483015260e482018590526101048083018590528351808403909101815261012490920183526020820180516001600160e01b03166323f2ebc360e21b1790529151918f169162001b75919062002d41565b6000604051808303816000865af19150503d806000811462001bb4576040519150601f19603f3d011682016040523d82523d6000602084013e62001bb9565b606091505b50505050505050505050505b5050505050565b6040516001600160a01b038085166024830152831660448201526064810182905262000fdb9085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526200218d565b80600162001c4a602060026200318e565b62001c5691906200319c565b6021541062001cbb5760405162461bcd60e51b815260206004820152602a60248201527f4465706f736974436f6e74726163743a5f6465706f7369743a204d65726b6c65604482015269081d1c995948199d5b1b60b21b606482015260840162000553565b60016021600082825462001cd09190620031b6565b909155505060215460005b602081101562001d7a578160011660010362001d1057826001826020811062001d085762001d0862002c91565b015550505050565b6001816020811062001d265762001d2662002c91565b0154604080516020810192909252810184905260600160405160208183030381529060405280519060200120925060028262001d63919062002cd3565b91508062001d718162002cea565b91505062001cdb565b5062001d85620031d1565b505050565b60225460ff161562001db05760405162461bcd60e51b81526004016200055390620029de565b6022805460ff191660011790556040517f2261efe5aef6fedc1fd1550b25facc9181745623049c7901287030b9ad1a549790600090a1565b62001df98a63ffffffff1662001469565b1562001e505760405162461bcd60e51b815260206004820152603060248201526000805160206200477983398151915260448201526f08105b1c9958591e4818db185a5b595960821b606482015260840162000553565b6026546040805160208082018d90528183018c9052825180830384018152606083019384905280519101206312bd9b1960e11b90925260648101919091526000916001600160a01b03169063257b3632906084016020604051808303816000875af115801562001ec4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001eea9190620031e7565b90508060000362001f4d5760405162461bcd60e51b81526020600482015260376024820152600080516020620047798339815191526044820152760811db1bd8985b115e1a5d149bdbdd081a5b9d985b1a59604a1b606482015260840162000553565b60225463ffffffff878116610100909204161462001fcf5760405162461bcd60e51b815260206004820152604360248201526000805160206200477983398151915260448201527f2044657374696e6174696f6e206e6574776f726b20646f6573206e6f74206d616064820152620e8c6d60eb1b608482015260a40162000553565b602254600090610100900463ffffffff1662001fed57508862001ff0565b50895b6200201b6200200c848b8b8b8b8b8b8051906020012062000c4f565b8e8e63ffffffff168462000b4e565b620009c05760405162461bcd60e51b81526020600482015260326024820152600080516020620047798339815191526044820152711024b73b30b634b21039b6ba10383937b7b360711b606482015260840162000553565b6000620020836101008362002cd3565b90506000620020956101008462002e0b565b6000928352602360205260409092208054600190931b9092179091555050565b62001d858363a9059cbb60e01b848460405160240162001c0192919062002a46565b60225460ff16620021515760405162461bcd60e51b815260206004820152603b60248201527f456d657267656e63794d616e616765723a3a6966456d657267656e637953746160448201527f74653a206f6e6c7920696620656d657267656e63792073746174650000000000606482015260840162000553565b6022805460ff191690556040517f1e5e34eea33501aecf2ebec9fe0e884a40804275ea7fe10b2ba084c8374308b390600090a1565b6020015190565b6000620021e4826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316620022669092919063ffffffff16565b80519091501562001d85578080602001905181019062002205919062003201565b62001d855760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840162000553565b606062000c47848460008585600080866001600160a01b0316858760405162002290919062002d41565b60006040518083038185875af1925050503d8060008114620022cf576040519150601f19603f3d011682016040523d82523d6000602084013e620022d4565b606091505b5091509150620022e787838387620022f2565b979650505050505050565b60608315620023665782516000036200235e576001600160a01b0385163b6200235e5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640162000553565b508162000c47565b62000c4783838151156200237d5781518083602001fd5b8060405162461bcd60e51b815260040162000553919062003221565b611542806200323783390190565b6001600160a01b0381168114620023bd57600080fd5b50565b8035620023cd81620023a7565b919050565b803563ffffffff81168114620023cd57600080fd5b60008083601f840112620023fa57600080fd5b5081356001600160401b038111156200241257600080fd5b6020830191508360208285010111156200242b57600080fd5b9250929050565b60008060008060008060a087890312156200244c57600080fd5b86356200245981620023a7565b95506200246960208801620023d2565b945060408701356200247b81620023a7565b93506060870135925060808701356001600160401b038111156200249e57600080fd5b620024ac89828a01620023e7565b979a9699509497509295939492505050565b60008060408385031215620024d257600080fd5b620024dd83620023d2565b91506020830135620024ef81620023a7565b809150509250929050565b6000602082840312156200250d57600080fd5b81356200251a81620023a7565b9392505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171562002562576200256262002521565b604052919050565b600082601f8301126200257c57600080fd5b813560206001600160401b038211156200259a576200259a62002521565b8160051b620025ab82820162002537565b9283528481018201928281019087851115620025c657600080fd5b83870192505b84831015620022e757823582529183019190830190620025cc565b60008060008060808587031215620025fe57600080fd5b8435935060208501356001600160401b03808211156200261d57600080fd5b6200262b888389016200256a565b94506040870135915080821682146200264357600080fd5b509396929550929360600135925050565b60ff81168114620023bd57600080fd5b600080600080600080600060e0888a0312156200268057600080fd5b87356200268d8162002654565b96506200269d60208901620023d2565b95506040880135620026af81620023a7565b9450620026bf60608901620023d2565b93506080880135620026d181620023a7565b9699959850939692959460a0840135945060c09093013592915050565b60006001600160401b038211156200270a576200270a62002521565b50601f01601f191660200190565b600082601f8301126200272a57600080fd5b8135620027416200273b82620026ee565b62002537565b8181528460208386010111156200275757600080fd5b816020850160208301376000918101602001919091529392505050565b6000806000806000806000806000806101408b8d0312156200279557600080fd5b8a356001600160401b0380821115620027ad57600080fd5b620027bb8e838f016200256a565b9b50620027cb60208e01620023d2565b9a5060408d0135995060608d01359850620027e960808e01620023d2565b9750620027f960a08e01620023c0565b96506200280960c08e01620023d2565b95506200281960e08e01620023c0565b94506101008d013593506101208d01359150808211156200283957600080fd5b50620028488d828e0162002718565b9150509295989b9194979a5092959850565b6000806000606084860312156200287057600080fd5b6200287b84620023d2565b925060208401356200288d81620023a7565b915060408401356200289f81620023a7565b809150509250925092565b600060208284031215620028bd57600080fd5b5035919050565b600080600080600080600060a0888a031215620028e057600080fd5b620028eb88620023d2565b96506020880135620028fd81620023a7565b955060408801356001600160401b03808211156200291a57600080fd5b620029288b838c01620023e7565b909750955060608a01359150808211156200294257600080fd5b50620029518a828b01620023e7565b9094509250506080880135620029678162002654565b8091505092959891949750929550565b6000806000606084860312156200298d57600080fd5b6200299884620023d2565b92506020840135620029aa81620023a7565b915060408401356001600160401b03811115620029c657600080fd5b620029d48682870162002718565b9150509250925092565b60208082526042908201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960408201527f53746174653a206f6e6c79206966206e6f7420656d657267656e637920737461606082015261746560f01b608082015260a00190565b6001600160a01b03929092168252602082015260400190565b60005b8381101562002a7c57818101518382015260200162002a62565b8381111562000fdb5750506000910152565b600082601f83011262002aa057600080fd5b815162002ab16200273b82620026ee565b81815284602083860101111562002ac757600080fd5b62000c4782602083016020870162002a5f565b60006020828403121562002aed57600080fd5b81516001600160401b0381111562002b0457600080fd5b62000c478482850162002a8e565b60006020828403121562002b2557600080fd5b81516200251a8162002654565b6000815180845262002b4c81602086016020860162002a5f565b601f01601f19169290920160200192915050565b60608152600062002b75606083018662002b32565b828103602084015262002b89818662002b32565b91505060ff83166040830152949350505050565b60ff8916815263ffffffff88811660208301526001600160a01b03888116604084015287821660608401528616608083015260a0820185905261010060c0830181905260009162002bf18483018762002b32565b925080851660e085015250509998505050505050505050565b6020808252603a908201527f506f6c79676f6e5a6b45564d3a3a6f6e6c79506f6c79676f6e5a6b45564d3a2060408201527f6f6e6c7920506f6c79676f6e5a6b45564d20636f6e7472616374000000000000606082015260800190565b60e09290921b6001600160e01b031916825260601b6001600160601b031916600482015260180190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60008262002ce55762002ce562002ca7565b500490565b60006001820162002cff5762002cff62002cbd565b5060010190565b6001600160a01b038416815263ffffffff8316602082015260606040820181905260009062002d389083018462002b32565b95945050505050565b6000825162002d5581846020870162002a5f565b9190910192915050565b63ffffffff95861681529390941660208401526001600160a01b039182166040840152166060820152608081019190915260a00190565b60008060006060848603121562002dac57600080fd5b83516001600160401b038082111562002dc457600080fd5b62002dd28783880162002a8e565b9450602086015191508082111562002de957600080fd5b5062002df88682870162002a8e565b92505060408401516200289f8162002654565b60008262002e1d5762002e1d62002ca7565b500690565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60608152600062002e6160608301878962002e22565b828103602084015262002e7681868862002e22565b91505060ff831660408301529695505050505050565b6000835162002ea081846020880162002a5f565b83519083019062002eb681836020880162002a5f565b01949350505050565b6000808585111562002ed057600080fd5b8386111562002ede57600080fd5b5050820193919092039150565b600080600080600080600060e0888a03121562002f0757600080fd5b873562002f1481620023a7565b9650602088013562002f2681620023a7565b955060408801359450606088013593506080880135620026d18162002654565b6020808252603c908201527f506f6c79676f6e5a6b45564d4272696467653a3a5f7065726d69743a2050657260408201527f6d6974206f776e6572206d757374206265207468652073656e64657200000000606082015260800190565b60208082526033908201527f506f6c79676f6e5a6b45564d4272696467653a3a5f7065726d69743a205370656040820152726e646572206d7573742062652027746869732760681b606082015260800190565b8015158114620023bd57600080fd5b600080600080600080600080610100898b0312156200302357600080fd5b88356200303081620023a7565b975060208901356200304281620023a7565b965060408901359550606089013594506080890135620030628162002ff6565b935060a0890135620030748162002654565b979a969950949793969295929450505060c08201359160e0013590565b600181815b80851115620030d2578160001904821115620030b657620030b662002cbd565b80851615620030c457918102915b93841c939080029062003096565b509250929050565b600082620030eb5750600162000a55565b81620030fa5750600062000a55565b81600181146200311357600281146200311e576200313e565b600191505062000a55565b60ff84111562003132576200313262002cbd565b50506001821b62000a55565b5060208310610133831016604e8410600b841016171562003163575081810a62000a55565b6200316f838362003091565b806000190482111562003186576200318662002cbd565b029392505050565b60006200251a8383620030da565b600082821015620031b157620031b162002cbd565b500390565b60008219821115620031cc57620031cc62002cbd565b500190565b634e487b7160e01b600052600160045260246000fd5b600060208284031215620031fa57600080fd5b5051919050565b6000602082840312156200321457600080fd5b81516200251a8162002ff6565b6020815260006200251a602083018462002b3256fe60c06040523480156200001157600080fd5b5060405162001542380380620015428339810160408190526200003491620002ad565b82826003620000448382620003c1565b506004620000538282620003c1565b5050600580546001600160a81b0319163360ff60a01b191617600160a01b60ff851602179055504660808190526200008b9062000098565b60a052506200048d915050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f620000c562000146565b805160209182012060408051808201825260018152603160f81b90840152805192830193909352918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060820152608081018390523060a082015260c001604051602081830303815290604052805190602001209050919050565b606060038054620001579062000332565b80601f0160208091040260200160405190810160405280929190818152602001828054620001859062000332565b8015620001d65780601f10620001aa57610100808354040283529160200191620001d6565b820191906000526020600020905b815481529060010190602001808311620001b857829003601f168201915b5050505050905090565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200020857600080fd5b81516001600160401b0380821115620002255762000225620001e0565b604051601f8301601f19908116603f01168101908282118183101715620002505762000250620001e0565b816040528381526020925086838588010111156200026d57600080fd5b600091505b8382101562000291578582018301518183018401529082019062000272565b83821115620002a35760008385830101525b9695505050505050565b600080600060608486031215620002c357600080fd5b83516001600160401b0380821115620002db57600080fd5b620002e987838801620001f6565b945060208601519150808211156200030057600080fd5b506200030f86828701620001f6565b925050604084015160ff811681146200032757600080fd5b809150509250925092565b600181811c908216806200034757607f821691505b6020821081036200036857634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620003bc57600081815260208120601f850160051c81016020861015620003975750805b601f850160051c820191505b81811015620003b857828155600101620003a3565b5050505b505050565b81516001600160401b03811115620003dd57620003dd620001e0565b620003f581620003ee845462000332565b846200036e565b602080601f8311600181146200042d5760008415620004145750858301515b600019600386901b1c1916600185901b178555620003b8565b600085815260208120601f198616915b828110156200045e578886015182559484019460019091019084016200043d565b50858210156200047d5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60805160a051611088620004ba60003960006104690152600081816102f9015261043301526110886000f3fe608060405234801561001057600080fd5b50600436106101375760003560e01c806370a08231116100b8578063a457c2d71161007c578063a457c2d7146102ce578063a9059cbb146102e1578063cd0d0096146102f4578063d505accf1461031b578063dd62ed3e1461032e578063ffa1ad741461034157600080fd5b806370a082311461023f5780637ecebe001461026857806395d89b41146102885780639dc29fac14610290578063a3c573eb146102a357600080fd5b806330adf81f116100ff57806330adf81f146101c9578063313ce567146101f05780633644e5151461020f578063395093511461021757806340c10f191461022a57600080fd5b806306fdde031461013c578063095ea7b31461015a57806318160ddd1461017d57806320606b701461018f57806323b872dd146101b6575b600080fd5b610144610361565b6040516101519190610dc2565b60405180910390f35b61016d610168366004610e33565b6103f3565b6040519015158152602001610151565b6002545b604051908152602001610151565b6101817f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81565b61016d6101c4366004610e5d565b61040b565b6101817f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b600554600160a01b900460ff1660405160ff9091168152602001610151565b61018161042f565b61016d610225366004610e33565b61048b565b61023d610238366004610e33565b6104ad565b005b61018161024d366004610e99565b6001600160a01b031660009081526020819052604090205490565b610181610276366004610e99565b60066020526000908152604090205481565b6101446104ee565b61023d61029e366004610e33565b6104fd565b6005546102b6906001600160a01b031681565b6040516001600160a01b039091168152602001610151565b61016d6102dc366004610e33565b610531565b61016d6102ef366004610e33565b6105ac565b6101817f000000000000000000000000000000000000000000000000000000000000000081565b61023d610329366004610ebb565b6105ba565b61018161033c366004610f2e565b6107f5565b610144604051806040016040528060018152602001603160f81b81525081565b60606003805461037090610f61565b80601f016020809104026020016040519081016040528092919081815260200182805461039c90610f61565b80156103e95780601f106103be576101008083540402835291602001916103e9565b820191906000526020600020905b8154815290600101906020018083116103cc57829003601f168201915b5050505050905090565b600033610401818585610820565b5060019392505050565b600033610419858285610945565b6104248585856109bf565b506001949350505050565b60007f000000000000000000000000000000000000000000000000000000000000000046146104665761046146610b51565b905090565b507f000000000000000000000000000000000000000000000000000000000000000090565b60003361040181858561049e83836107f5565b6104a89190610fb1565b610820565b6005546001600160a01b031633146104e05760405162461bcd60e51b81526004016104d790610fc9565b60405180910390fd5b6104ea8282610bfd565b5050565b60606004805461037090610f61565b6005546001600160a01b031633146105275760405162461bcd60e51b81526004016104d790610fc9565b6104ea8282610caa565b6000338161053f82866107f5565b90508381101561059f5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016104d7565b6104248286868403610820565b6000336104018185856109bf565b834211156106165760405162461bcd60e51b8152602060048201526024808201527f546f6b656e577261707065643a3a7065726d69743a20457870697265642070656044820152631c9b5a5d60e21b60648201526084016104d7565b6001600160a01b038716600090815260066020526040812080547f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918a918a918a91908661066383611019565b909155506040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e00160405160208183030381529060405280519060200120905060006106c161042f565b60405161190160f01b602082015260228101919091526042810183905260620160408051601f198184030181528282528051602091820120600080855291840180845281905260ff89169284019290925260608301879052608083018690529092509060019060a0016020604051602081039080840390855afa15801561074c573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116158015906107825750896001600160a01b0316816001600160a01b0316145b6107de5760405162461bcd60e51b815260206004820152602760248201527f546f6b656e577261707065643a3a7065726d69743a20496e76616c6964207369604482015266676e617475726560c81b60648201526084016104d7565b6107e98a8a8a610820565b50505050505050505050565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166108825760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016104d7565b6001600160a01b0382166108e35760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016104d7565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b600061095184846107f5565b905060001981146109b957818110156109ac5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016104d7565b6109b98484848403610820565b50505050565b6001600160a01b038316610a235760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016104d7565b6001600160a01b038216610a855760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016104d7565b6001600160a01b03831660009081526020819052604090205481811015610afd5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016104d7565b6001600160a01b0384811660008181526020818152604080832087870390559387168083529184902080548701905592518581529092600080516020611033833981519152910160405180910390a36109b9565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f610b7c610361565b805160209182012060408051808201825260018152603160f81b90840152805192830193909352918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060820152608081018390523060a082015260c001604051602081830303815290604052805190602001209050919050565b6001600160a01b038216610c535760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016104d7565b8060026000828254610c659190610fb1565b90915550506001600160a01b03821660008181526020818152604080832080548601905551848152600080516020611033833981519152910160405180910390a35050565b6001600160a01b038216610d0a5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016104d7565b6001600160a01b03821660009081526020819052604090205481811015610d7e5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016104d7565b6001600160a01b0383166000818152602081815260408083208686039055600280548790039055518581529192916000805160206110338339815191529101610938565b600060208083528351808285015260005b81811015610def57858101830151858201604001528201610dd3565b81811115610e01576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b0381168114610e2e57600080fd5b919050565b60008060408385031215610e4657600080fd5b610e4f83610e17565b946020939093013593505050565b600080600060608486031215610e7257600080fd5b610e7b84610e17565b9250610e8960208501610e17565b9150604084013590509250925092565b600060208284031215610eab57600080fd5b610eb482610e17565b9392505050565b600080600080600080600060e0888a031215610ed657600080fd5b610edf88610e17565b9650610eed60208901610e17565b95506040880135945060608801359350608088013560ff81168114610f1157600080fd5b9699959850939692959460a0840135945060c09093013592915050565b60008060408385031215610f4157600080fd5b610f4a83610e17565b9150610f5860208401610e17565b90509250929050565b600181811c90821680610f7557607f821691505b602082108103610f9557634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60008219821115610fc457610fc4610f9b565b500190565b60208082526030908201527f546f6b656e577261707065643a3a6f6e6c794272696467653a204e6f7420506f60408201526f6c79676f6e5a6b45564d42726964676560801b606082015260800190565b60006001820161102b5761102b610f9b565b506001019056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212208b7986f78e961ad6c0885b86b24ce427045be98073c1f3d7fe18180542ab873564736f6c634300080f0033506f6c79676f6e5a6b45564d4272696467653a3a5f7665726966794c6561663aa26469706673582212207321963add10aa42fbf70097691018c23164a96132c6cd71e46023fffa7d461764736f6c634300080f00338203e88080777dd3dc8232ea55dbedf0681a6a9134de7200ab1334a6015345d9257ef62971780fe992e94f761de3335283ba6c1d9f3f512e05503d4526f62eb9644a1cf5681c", + "0xf887028083989680949d98deabc42dd696deb9e40b4f1cab7ddbf5598880b864647c576c0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000ae4bb80be56b819606589de61d5ec3b522eeb03200000000000000000000000000000000000000000000000000000000000000008203e8808052465a317fd5c147ded90409a32915bbe579c557787787abbc17e67a47f773694f7fa1fd7b14ab8175e1725ec18cee985bcc262340ad5a215b097f2b3a880ee41b" ] } \ No newline at end of file diff --git a/docker/scripts/genesis_gen_docker.json b/docker/scripts/genesis_gen_docker.json index d0becfe..c50cf54 100644 --- a/docker/scripts/genesis_gen_docker.json +++ b/docker/scripts/genesis_gen_docker.json @@ -1,6 +1,6 @@ { - "defaultChainId": 1000, + "defaultChainId": 0, "sequencerAddress": "0xC949254d682D8c9ad5682521675b8F43b102aec4", "genesis": [ { @@ -29,7 +29,6 @@ "value": "0", "gasLimit": 10000000, "gasPrice": "0", - "chainId": 1000, "paramsDeploy": { "types": [ "address" @@ -47,7 +46,6 @@ "value": "0", "gasLimit": 10000000, "gasPrice": "0", - "chainId": 1000, "contractName": "PolygonZkEVMBridge" }, { @@ -57,7 +55,6 @@ "value": "0", "gasLimit": 10000000, "gasPrice": "0", - "chainId": 1000, "function": "initialize", "paramsFunction": [ 1, diff --git a/docs/PolygonZkEVM.md b/docs/PolygonZkEVM.md index 5f2c2bd..6c8270f 100644 --- a/docs/PolygonZkEVM.md +++ b/docs/PolygonZkEVM.md @@ -134,7 +134,7 @@ Verify batches internal function ) internal ``` Internal function to consolidate the state automatically once sequence or verify batches are called -It trys to consolidate the first and the middle pending state +It trys to consolidate the first and the middle pending state in the queue diff --git a/docs/lib/DepositContract.md b/docs/lib/DepositContract.md index d82c81b..6d597eb 100644 --- a/docs/lib/DepositContract.md +++ b/docs/lib/DepositContract.md @@ -31,7 +31,7 @@ Add a new leaf to the merkle tree function verifyMerkleProof( bytes32 leafHash, bytes32[] smtProof, - uint64 index, + uint32 index, bytes32 root ) public returns (bool) ``` @@ -43,7 +43,7 @@ Verify merkle proof | :--- | :--- | :------------------------------------------------------------------- | |`leafHash` | bytes32 | Leaf hash |`smtProof` | bytes32[] | Smt proof -|`index` | uint64 | Index of the leaf +|`index` | uint32 | Index of the leaf |`root` | bytes32 | Merkle root ### getLeafValue diff --git a/package.json b/package.json index e2ca6fd..f6f5915 100644 --- a/package.json +++ b/package.json @@ -70,6 +70,8 @@ "compile": "npx hardhat compile", "docker:contracts": "./docker/scripts/deploy-docker.sh", "push:docker:contracts": "docker push hermeznetwork/geth-zkevm-contracts", - "update:genesis": "node src/create-genesis.js --gen ../deployment/genesis-gen.json --out ../deployment/genesis.json && node src/create-genesis.js --gen ../docker/scripts/genesis_gen_docker.json --out ../docker/scripts/genesis_docker.json" + "update:genesis": "node src/create-genesis.js --gen ../deployment/genesis-gen.json --out ../deployment/genesis.json && node src/create-genesis.js --gen ../docker/scripts/genesis_gen_docker.json --out ../docker/scripts/genesis_docker.json", + "coverage":"npx hardhat coverage", + "gas:report":"REPORT_GAS=true npx hardhat test" } } diff --git a/src/create-genesis.js b/src/create-genesis.js index a5728e7..9759ad0 100644 --- a/src/create-genesis.js +++ b/src/create-genesis.js @@ -110,7 +110,7 @@ async function main() { let customRawTx; const address = genesis.find((o) => o.address === currentTx.from); const wallet = new ethers.Wallet(address.pvtKey); - if (tx.chainId === 0) { + if (tx.chainId === 0 || tx.chainId === undefined) { const signData = ethers.utils.RLP.encode([ processorUtils.toHexStringRlp(Scalar.e(tx.nonce)), processorUtils.toHexStringRlp(tx.gasPrice), @@ -118,9 +118,6 @@ async function main() { processorUtils.toHexStringRlp(tx.to), processorUtils.toHexStringRlp(tx.value), processorUtils.toHexStringRlp(tx.data), - processorUtils.toHexStringRlp(tx.chainId), - '0x', - '0x', ]); const digest = ethers.utils.keccak256(signData); const signingKey = new ethers.utils.SigningKey(address.pvtKey); @@ -198,21 +195,10 @@ async function main() { genesisOutput.root = smtUtils.h4toString(batch.currentStateRoot); genesisOutput.genesis = accountsOutput; + genesisOutput.rawTxs = rawTxs; + const genesisOutputPath = path.join(__dirname, outPath); await fs.writeFileSync(genesisOutputPath, JSON.stringify(genesisOutput, null, 2)); - - if (argv.update) { - const updatePath = (typeof argv.update === 'undefined') ? undefined : argv.update; - - if (!fs.existsSync(updatePath)) { - throw new Error('Update file does not exist'); - } - - const testVectors = JSON.parse(fs.readFileSync(updatePath)); - testVectors[0].genesis = genesisOutput.genesis; - testVectors[0].expectedOldRoot = genesisOutput.root; - await fs.writeFileSync(updatePath, JSON.stringify(testVectors, null, 2)); - } } // We recommend this pattern to be able to use async/await everywhere // and properly handle errors. diff --git a/test/contracts/proofOfEfficiency.test.js b/test/contracts/proofOfEfficiency.test.js index bf0539c..4c8b0ae 100644 --- a/test/contracts/proofOfEfficiency.test.js +++ b/test/contracts/proofOfEfficiency.test.js @@ -1,3 +1,4 @@ +/* eslint-disable no-plusplus, no-await-in-loop */ const { expect } = require('chai'); const { ethers, upgrades } = require('hardhat'); @@ -86,7 +87,7 @@ describe('Polygon ZK-EVM', () => { ); // fund sequencer address with Matic tokens - await maticTokenContract.transfer(trustedSequencer.address, ethers.utils.parseEther('100')); + await maticTokenContract.transfer(trustedSequencer.address, ethers.utils.parseEther('1000')); }); it('should check the constructor parameters', async () => { @@ -179,6 +180,23 @@ describe('Polygon ZK-EVM', () => { ).to.emit(polygonZkEVMContract, 'SetPendingStateTimeout').withArgs(newPendingStateTimeoutDefault); expect(await polygonZkEVMContract.pendingStateTimeout()).to.be.equal(newPendingStateTimeoutDefault); + // setMultiplierBatchFee + const newMultiplierBatchFee = 1023; + await expect(polygonZkEVMContract.connect(admin).setMultiplierBatchFee(newMultiplierBatchFee + 1)) + .to.be.revertedWith('PolygonZkEVM::setMultiplierBatchFee: newMultiplierBatchFee incorrect range'); + + await expect( + polygonZkEVMContract.connect(admin).setMultiplierBatchFee(newMultiplierBatchFee), + ).to.emit(polygonZkEVMContract, 'SetMultiplierBatchFee').withArgs(newMultiplierBatchFee); + expect(await polygonZkEVMContract.multiplierBatchFee()).to.be.equal(newMultiplierBatchFee); + + // setVeryBatchTimeTarget + const newVeryBatchTimeTarget = 100; + await expect( + polygonZkEVMContract.connect(admin).setVeryBatchTimeTarget(newVeryBatchTimeTarget), + ).to.emit(polygonZkEVMContract, 'SetVeryBatchTimeTarget').withArgs(newVeryBatchTimeTarget); + expect(await polygonZkEVMContract.veryBatchTimeTarget()).to.be.equal(newVeryBatchTimeTarget); + // setAdmin await expect(polygonZkEVMContract.setAdmin(deployer.address)) .to.be.revertedWith('PolygonZkEVM::onlyAdmin: Only admin'); @@ -1112,7 +1130,6 @@ describe('Polygon ZK-EVM', () => { it('should test the pending state properly', async () => { const l2txData = '0x123456'; - const maticAmount = await polygonZkEVMContract.getCurrentBatchFee(); const currentTimestamp = (await ethers.provider.getBlock()).timestamp; const batchesForSequence = 5; @@ -1130,8 +1147,8 @@ describe('Polygon ZK-EVM', () => { maticTokenContract.connect(trustedSequencer).approve(polygonZkEVMContract.address, maticTokenInitialBalance), ).to.emit(maticTokenContract, 'Approval'); - // Make 10 sequences of 5 batches, with 1 minut timestamp difference - for (let i = 0; i < 10; i++) { + // Make 20 sequences of 5 batches, with 1 minut timestamp difference + for (let i = 0; i < 20; i++) { await expect(polygonZkEVMContract.connect(trustedSequencer).sequenceBatches(sequencesArray)) .to.emit(polygonZkEVMContract, 'SequenceBatches'); } @@ -1147,9 +1164,6 @@ describe('Polygon ZK-EVM', () => { ]; const proofC = ['0', '0']; - const sequencedBatchData = await polygonZkEVMContract.sequencedBatches(batchesForSequence); - const { sequencedTimestamp } = sequencedBatchData; - let currentPendingState = 0; let currentNumBatch = 0; let newBatch = currentNumBatch + batchesForSequence; @@ -1243,6 +1257,11 @@ describe('Polygon ZK-EVM', () => { expect(currentPendingState).to.be.equal(await polygonZkEVMContract.lastPendingState()); expect(0).to.be.equal(await polygonZkEVMContract.lastPendingStateConsolidated()); + // Check consolidated state + let currentVerifiedBatch = newBatch; + expect(currentVerifiedBatch).to.be.equal(await polygonZkEVMContract.lastVerifiedBatch()); + expect(newStateRoot).to.be.equal(await polygonZkEVMContract.batchNumToStateRoot(currentVerifiedBatch)); + await expect( polygonZkEVMContract.connect(trustedAggregator).trustedVerifyBatches( 1, @@ -1400,8 +1419,10 @@ describe('Polygon ZK-EVM', () => { const firstPendingState = await polygonZkEVMContract.pendingStateTransitions(1); await ethers.provider.send('evm_setNextBlockTimestamp', [firstPendingState.timestamp.toNumber() + pendingStateTimeoutDefault]); + let currentPendingConsolidated = 0; currentNumBatch = newBatch; newBatch += batchesForSequence; + await expect( polygonZkEVMContract.connect(aggregator1).verifyBatches( currentPendingState, @@ -1416,12 +1437,12 @@ describe('Polygon ZK-EVM', () => { ).to.emit(polygonZkEVMContract, 'VerifyBatches') .withArgs(newBatch, newStateRoot, aggregator1.address) .to.emit(polygonZkEVMContract, 'ConsolidatePendingState') - .withArgs(firstPendingState.lastVerifiedBatch, newStateRoot, 1); + .withArgs(firstPendingState.lastVerifiedBatch, newStateRoot, ++currentPendingConsolidated); verifyTimestamp = (await ethers.provider.getBlock()).timestamp; currentPendingState++; expect(currentPendingState).to.be.equal(await polygonZkEVMContract.lastPendingState()); - expect(1).to.be.equal(await polygonZkEVMContract.lastPendingStateConsolidated()); + expect(currentPendingConsolidated).to.be.equal(await polygonZkEVMContract.lastPendingStateConsolidated()); currentPendingStateData = await polygonZkEVMContract.pendingStateTransitions(currentPendingState); expect(verifyTimestamp).to.be.equal(currentPendingStateData.timestamp); @@ -1430,10 +1451,77 @@ describe('Polygon ZK-EVM', () => { expect(newStateRoot).to.be.equal(currentPendingStateData.stateRoot); // Check state consolidated + currentVerifiedBatch += batchesForSequence; + expect(currentVerifiedBatch).to.be.equal(await polygonZkEVMContract.lastVerifiedBatch()); + expect(newStateRoot).to.be.equal(await polygonZkEVMContract.batchNumToStateRoot(currentVerifiedBatch)); - - // Consolidate using verifyBatches - const firstPendingState = await polygonZkEVMContract.pendingStateTransitions(1); - await ethers.provider.send('evm_setNextBlockTimestamp', [firstPendingState.timestamp.toNumber() + pendingStateTimeoutDefault]); + // Consolidate using sendBatches + const secondPendingState = await polygonZkEVMContract.pendingStateTransitions(2); + await ethers.provider.send('evm_setNextBlockTimestamp', [secondPendingState.timestamp.toNumber() + pendingStateTimeoutDefault]); + + await expect(polygonZkEVMContract.connect(trustedSequencer).sequenceBatches(sequencesArray)) + .to.emit(polygonZkEVMContract, 'SequenceBatches') + .to.emit(polygonZkEVMContract, 'ConsolidatePendingState') + .withArgs(secondPendingState.lastVerifiedBatch, newStateRoot, ++currentPendingConsolidated); + + expect(currentPendingState).to.be.equal(await polygonZkEVMContract.lastPendingState()); + expect(currentPendingConsolidated).to.be.equal(await polygonZkEVMContract.lastPendingStateConsolidated()); + + // Check state consolidated + currentVerifiedBatch += batchesForSequence; + expect(currentVerifiedBatch).to.be.equal(await polygonZkEVMContract.lastVerifiedBatch()); + expect(newStateRoot).to.be.equal(await polygonZkEVMContract.batchNumToStateRoot(currentVerifiedBatch)); + + // Put a lot of pending states and check that half of them are consoldiated + for (let i = 0; i < 8; i++) { + currentNumBatch = newBatch; + newBatch += batchesForSequence; + await expect( + polygonZkEVMContract.connect(aggregator1).verifyBatches( + currentPendingState, + currentNumBatch, + newBatch, + newLocalExitRoot, + newStateRoot, + proofA, + proofB, + proofC, + ), + ).to.emit(polygonZkEVMContract, 'VerifyBatches') + .withArgs(newBatch, newStateRoot, aggregator1.address); + + currentPendingState++; + } + + expect(currentPendingState).to.be.equal(await polygonZkEVMContract.lastPendingState()); + + currentPendingConsolidated = await polygonZkEVMContract.lastPendingStateConsolidated(); + const lastPendingState = await polygonZkEVMContract.pendingStateTransitions(currentPendingState); + await ethers.provider.send('evm_setNextBlockTimestamp', [lastPendingState.timestamp.toNumber() + pendingStateTimeoutDefault]); + + // call verify batches and check that half of them are consolidated + expect(currentPendingState).to.be.equal(await polygonZkEVMContract.lastPendingState()); + expect(currentPendingConsolidated).to.be.equal(await polygonZkEVMContract.lastPendingStateConsolidated()); + + const nextPendingConsolidated = Number(currentPendingConsolidated) + 1; + const nextConsolidatedStateNum = nextPendingConsolidated + Number(Math.floor((currentPendingState - nextPendingConsolidated) / 2)); + const nextConsolidatedState = await polygonZkEVMContract.pendingStateTransitions(nextConsolidatedStateNum); + + await expect(polygonZkEVMContract.connect(trustedSequencer).sequenceBatches(sequencesArray)) + .to.emit(polygonZkEVMContract, 'SequenceBatches') + .to.emit(polygonZkEVMContract, 'ConsolidatePendingState') + .withArgs(nextConsolidatedState.lastVerifiedBatch, newStateRoot, nextConsolidatedStateNum); + + // Put pendingState to 0 and check that the pending state is clear after verifyBatches + + await expect( + polygonZkEVMContract.connect(admin).setPendingStateTimeout(0), + ).to.emit(polygonZkEVMContract, 'SetPendingStateTimeout').withArgs(0); + + it('Test batch fees properly', async () => { + }); + + it('Test overridePendingState properly', async () => { + }); }); });