From 3959b91975b7b245fe0124942aca7820869463f6 Mon Sep 17 00:00:00 2001 From: invocamanman Date: Wed, 23 Nov 2022 11:15:42 +0100 Subject: [PATCH] now proofs works ^^ --- compiled-contracts/Bridge.json | 4 +- compiled-contracts/BridgeMock.json | 4 +- compiled-contracts/ERC20PermitMock.json | 4 +- compiled-contracts/GlobalExitRootManager.json | 4 +- .../GlobalExitRootManagerL2.json | 4 +- .../GlobalExitRootManagerL2Mock.json | 4 +- .../GlobalExitRootManagerMock.json | 22 +- compiled-contracts/ProofOfEfficiency.json | 8 +- compiled-contracts/ProofOfEfficiencyMock.json | 8 +- compiled-contracts/TokenWrapped.json | 4 +- compiled-contracts/Verifier.json | 4 +- contracts/Bridge.sol | 8 +- contracts/ProofOfEfficiency.sol | 81 +- contracts/lib/TokenWrapped.sol | 26 +- contracts/mocks/GlobalExitRootManagerMock.sol | 10 + contracts/verifiers/Verifier.sol | 82 +- docs/ProofOfEfficiency.md | 10 +- package.json | 2 +- test/contracts/emergencyManager.test.js | 12 +- test/contracts/real-prover/real-flow.test.js | 159 ++- .../real-prover/test-inputs/input.json | 1098 ++++++++++++++++- .../real-prover/test-inputs/proof.json | 17 +- .../real-prover/test-inputs/public.json | 2 +- 23 files changed, 1348 insertions(+), 229 deletions(-) diff --git a/compiled-contracts/Bridge.json b/compiled-contracts/Bridge.json index d4f7c9b94..717f4e0bc 100644 --- a/compiled-contracts/Bridge.json +++ b/compiled-contracts/Bridge.json @@ -776,8 +776,8 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b50615951806100206000396000f3fe608060405260043610620001db5760003560e01c806381b1c17411620000ff578063d96a15f71162000095578063e7a5b4ea116200006c578063e7a5b4ea1462000658578063ed6be5c9146200067d578063f2fde38b1462000694578063ff634ed714620006b957600080fd5b8063d96a15f714620005f5578063dbc16976146200060c578063e7375881146200062457600080fd5b8063a08e8a0811620000d6578063a08e8a08146200054f578063aaa13cc21462000579578063bab161bf146200059e578063d02103ca14620005d357600080fd5b806381b1c17414620004d35780638da5cb5b146200050d5780638f611519146200052d57600080fd5b80633ae05047116200017557806346385549116200014c57806346385549146200044c578063655595401462000471578063715018a614620004965780637b6323c114620004ae57600080fd5b80633ae05047146200032e5780633da8168214620003465780633e197043146200036b57600080fd5b80632072f6c511620001b65780632072f6c5146200025157806322e95f2c14620002695780632dfdf0b514620002a7578063318aee3d14620002bf57600080fd5b80630871e97114620001e05780630e1da6c314620001f957806315064c961462000224575b600080fd5b620001f7620001f1366004620031bc565b620006d0565b005b3480156200020657600080fd5b5062000211608d5481565b6040519081526020015b60405180910390f35b3480156200023157600080fd5b50602254620002409060ff1681565b60405190151581526020016200021b565b3480156200025e57600080fd5b50620001f762000c7a565b3480156200027657600080fd5b506200028e6200028836600462003249565b62000d2e565b6040516001600160a01b0390911681526020016200021b565b348015620002b457600080fd5b506200021160215481565b348015620002cc57600080fd5b5062000309620002de36600462003285565b608a6020526000908152604090205463ffffffff81169064010000000090046001600160a01b031682565b6040805163ffffffff90931683526001600160a01b039091166020830152016200021b565b3480156200033b57600080fd5b506200021162000db1565b3480156200035357600080fd5b50620002406200036536600462003386565b62000ea4565b3480156200037857600080fd5b50620002116200038a36600462003404565b6040517fff0000000000000000000000000000000000000000000000000000000000000060f889901b1660208201527fffffffff0000000000000000000000000000000000000000000000000000000060e088811b821660218401526bffffffffffffffffffffffff19606089811b821660258601529188901b909216603984015285901b16603d8201526051810183905260718101829052600090609101604051602081830303815290604052805190602001209050979650505050505050565b3480156200045957600080fd5b50620001f76200046b36600462003515565b62000fa4565b3480156200047e57600080fd5b50620001f762000490366004620035fc565b6200122a565b348015620004a357600080fd5b50620001f762001410565b348015620004bb57600080fd5b50620001f7620004cd36600462003515565b62001426565b348015620004e057600080fd5b506200028e620004f236600462003652565b6089602052600090815260409020546001600160a01b031681565b3480156200051a57600080fd5b506055546001600160a01b03166200028e565b3480156200053a57600080fd5b50608c546200028e906001600160a01b031681565b3480156200055c57600080fd5b5062000566600081565b60405160ff90911681526020016200021b565b3480156200058657600080fd5b506200028e620005983660046200366c565b620019e8565b348015620005ab57600080fd5b50608754620005bd9063ffffffff1681565b60405163ffffffff90911681526020016200021b565b348015620005e057600080fd5b50608b546200028e906001600160a01b031681565b620001f76200060636600462003720565b62001b54565b3480156200061957600080fd5b50620001f762001e08565b3480156200063157600080fd5b50620002406200064336600462003652565b60886020526000908152604090205460ff1681565b3480156200066557600080fd5b50620001f76200067736600462003652565b62001eba565b3480156200068a57600080fd5b50620005bd600081565b348015620006a157600080fd5b50620001f7620006b336600462003285565b62001eff565b348015620006c657600080fd5b5062000566600181565b60225460ff1615620007755760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a4015b60405180910390fd5b60875463ffffffff90811690861603620007f85760405162461bcd60e51b815260206004820152602a60248201527f4272696467653a3a6272696467653a2044455354494e4154494f4e5f43414e5460448201527f5f42455f495453454c460000000000000000000000000000000000000000000060648201526084016200076c565b60008060606001600160a01b0389166200088d57853414620008835760405162461bcd60e51b815260206004820152602f60248201527f4272696467653a3a6272696467653a20414d4f554e545f444f45535f4e4f545f60448201527f4d415443485f4d53475f56414c5545000000000000000000000000000000000060648201526084016200076c565b6000915062000b17565b6001600160a01b03808a166000908152608a602090815260409182902082518084019093525463ffffffff811683526401000000009004909216918101829052901562000974576040517f9dc29fac000000000000000000000000000000000000000000000000000000008152336004820152602481018890526001600160a01b038b1690639dc29fac906044016020604051808303816000875af11580156200093b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000961919062003797565b5060208101518151909450925062000b15565b84156200098957620009898a88888862001f95565b620009a06001600160a01b038b1633308a620025ba565b899350608760009054906101000a900463ffffffff169250896001600160a01b03166306fdde036040518163ffffffff1660e01b8152600401600060405180830381865afa158015620009f7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000a2191908101906200383a565b8a6001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa15801562000a60573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000a8a91908101906200383a565b8b6001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000ac9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000aef919062003873565b60405160200162000b0393929190620038c1565b60405160208183030381529060405291505b505b7f501781209a1f8899323b96b4ef08b168df93e0a90c673d1e4cce39366cb62f9b600083858b8b8b8760215460405162000b59989796959493929190620038fe565b60405180910390a18051602080830191909120604080516000818501527fffffffff0000000000000000000000000000000000000000000000000000000060e087811b821660218401526bffffffffffffffffffffffff1960608a811b82166025860152918f901b90921660398401528c901b16603d820152605181018a9052607180820193909352815180820390930183526091019052805191012062000c019062002673565b608b546001600160a01b03166333d6247d62000c1c62000db1565b6040518263ffffffff1660e01b815260040162000c3b91815260200190565b600060405180830381600087803b15801562000c5657600080fd5b505af115801562000c6b573d6000803e3d6000fd5b50505050505050505050505050565b608c546001600160a01b0316331462000d225760405162461bcd60e51b815260206004820152604b60248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7950726f6f664f66456660448201527f66696369656e63793a206f6e6c792050726f6f66206f6620456666696369656e60648201527f637920636f6e7472616374000000000000000000000000000000000000000000608482015260a4016200076c565b62000d2c620027d7565b565b6040805160e084901b7fffffffff0000000000000000000000000000000000000000000000000000000016602080830191909152606084901b6bffffffffffffffffffffffff1916602483015282516018818403018152603890920183528151918101919091206000908152608990915220546001600160a01b03165b92915050565b602154600090819081805b602081101562000e9b578260011660010362000e1c576001816020811062000de85762000de86200396a565b0154604080516020810192909252810185905260600160405160208183030381529060405280519060200120935062000e49565b60408051602081018690529081018390526060016040516020818303038152906040528051906020012093505b62000e56600284620039c8565b6040805160208101859052908101849052909350606001604051602081830303815290604052805190602001209150808062000e929062003a04565b91505062000dbc565b50919392505050565b60008467ffffffffffffffff8416825b602081101562000f97578160011660010362000f215786818151811062000edf5762000edf6200396a565b60200260200101518360405160200162000f03929190918252602082015260400190565b60405160208183030381529060405280519060200120925062000f73565b8287828151811062000f375762000f376200396a565b602002602001015160405160200162000f5a929190918252602082015260400190565b6040516020818303038152906040528051906020012092505b62000f80600283620039c8565b91508062000f8e8162003a04565b91505062000eb4565b5050909114949350505050565b60225460ff1615620010455760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a4016200076c565b6200105b8a8a8a8a8a8a8a8a8a8a6001620028b0565b63ffffffff8916600090815260886020526040808220805460ff19166001179055516001600160a01b0385169084906200109e9089908b90879060240162003a3f565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1806b5f2000000000000000000000000000000000000000000000000000000001790525162001103919062003a78565b60006040518083038185875af1925050503d806000811462001142576040519150601f19603f3d011682016040523d82523d6000602084013e62001147565b606091505b5050905080620011bf5760405162461bcd60e51b8152602060048201526024808201527f4272696467653a3a636c61696d4d6573736167653a204d4553534147455f464160448201527f494c45440000000000000000000000000000000000000000000000000000000060648201526084016200076c565b6040805163ffffffff8c81168252891660208201526001600160a01b0388811682840152861660608201526080810185905290517f25308c93ceeed162da955b3f7ce3e3f93606579e40fb92029faa9efe275459839181900360a00190a15050505050505050505050565b600054610100900460ff16158080156200124b5750600054600160ff909116105b80620012675750303b15801562001267575060005460ff166001145b620012db5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016200076c565b6000805460ff1916600117905580156200131c57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6087805463ffffffff87167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000909116179055608b80546001600160a01b038087167fffffffffffffffffffffffff000000000000000000000000000000000000000092831617909255608c805492861692909116919091179055608d829055620013a562002c3d565b80156200140957600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b6200141a62002cc7565b62000d2c600062002d23565b60225460ff1615620014c75760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a4016200076c565b620014dd8a8a8a8a8a8a8a8a8a8a6000620028b0565b63ffffffff89166000908152608860205260409020805460ff191660011790556001600160a01b038516620015fc57604080516000808252602082019092526001600160a01b03851690849060405162001538919062003a78565b60006040518083038185875af1925050503d806000811462001577576040519150601f19603f3d011682016040523d82523d6000602084013e6200157c565b606091505b5050905080620015f55760405162461bcd60e51b815260206004820152602760248201527f4272696467653a3a636c61696d41737365743a204554485f5452414e5346455260448201527f5f4641494c45440000000000000000000000000000000000000000000000000060648201526084016200076c565b506200197e565b60875463ffffffff908116908716036200162c57620016266001600160a01b038616848462002d8d565b6200197e565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e088901b1660208201526bffffffffffffffffffffffff19606087901b16602482015260009060380160408051601f198184030181529181528151602092830120600081815260899093529120549091506001600160a01b031680620018ea57600080600085806020019051810190620016cc919062003a96565b925092509250600085848484604051620016e69062003125565b620016f493929190620038c1565b8190604051809103906000f590508015801562001715573d6000803e3d6000fd5b506040517f40c10f190000000000000000000000000000000000000000000000000000000081526001600160a01b038b81166004830152602482018b9052919250908216906340c10f19906044016020604051808303816000875af115801562001783573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620017a9919062003797565b50806089600088815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060405180604001604052808d63ffffffff1681526020018c6001600160a01b0316815250608a6000836001600160a01b03166001600160a01b0316815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a8154816001600160a01b0302191690836001600160a01b031602179055509050507fccd7715648d1f2bb13e158f96b5b6c3aeda555d4cb87112e274a6f28bc571d598c8c83604051620018d89392919063ffffffff9390931683526001600160a01b03918216602084015216604082015260600190565b60405180910390a1505050506200197b565b6040517f40c10f190000000000000000000000000000000000000000000000000000000081526001600160a01b038681166004830152602482018690528216906340c10f19906044016020604051808303816000875af115801562001953573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001979919062003797565b505b50505b6040805163ffffffff8b81168252881660208201526001600160a01b0387811682840152851660608201526080810184905290517f25308c93ceeed162da955b3f7ce3e3f93606579e40fb92029faa9efe275459839181900360a00190a150505050505050505050565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e089901b1660208201526bffffffffffffffffffffffff19606088901b1660248201526000908190603801604051602081830303815290604052805190602001209050600060ff60f81b30836040518060200162001a6b9062003125565b601f1982820381018352601f90910116604081905262001a98908d908d908d908d908d9060200162003b42565b60408051601f198184030181529082905262001ab8929160200162003b83565b6040516020818303038152906040528051906020012060405160200162001b2e94939291907fff0000000000000000000000000000000000000000000000000000000000000094909416845260609290921b6bffffffffffffffffffffffff191660018401526015830152603582015260550190565b60408051808303601f1901815291905280516020909101209a9950505050505050505050565b60225460ff161562001bf55760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a4016200076c565b60875463ffffffff9081169084160362001c785760405162461bcd60e51b815260206004820152602a60248201527f4272696467653a3a6272696467653a2044455354494e4154494f4e5f43414e5460448201527f5f42455f495453454c460000000000000000000000000000000000000000000060648201526084016200076c565b6087546021546040517f501781209a1f8899323b96b4ef08b168df93e0a90c673d1e4cce39366cb62f9b9262001cc59260019263ffffffff9092169133918991899134918a9190620038fe565b60405180910390a16087548151602080840191909120604080517f0100000000000000000000000000000000000000000000000000000000000000818501527fffffffff0000000000000000000000000000000000000000000000000000000060e095861b811660218301526bffffffffffffffffffffffff1933606090811b82166025850152968a901b90911660398301529487901b909416603d850152346051850152607180850192909252805180850390920182526091909301909252815191012062001d959062002673565b608b546001600160a01b03166333d6247d62001db062000db1565b6040518263ffffffff1660e01b815260040162001dcf91815260200190565b600060405180830381600087803b15801562001dea57600080fd5b505af115801562001dff573d6000803e3d6000fd5b50505050505050565b608c546001600160a01b0316331462001eb05760405162461bcd60e51b815260206004820152604b60248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7950726f6f664f66456660448201527f66696369656e63793a206f6e6c792050726f6f66206f6620456666696369656e60648201527f637920636f6e7472616374000000000000000000000000000000000000000000608482015260a4016200076c565b62000d2c62002dd8565b62001ec462002cc7565b608d8190556040518181527f126d6a8888996898896a660f1c9a7a4ef612bd6df82281a13079dd27cc38758d9060200160405180910390a150565b62001f0962002cc7565b6001600160a01b03811662001f875760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016200076c565b62001f928162002d23565b50565b600062001fd883838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525062002e8792505050565b90507f2afa5331000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000821601620022da5760008080808080806200203b896004818d62003bb6565b8101906200204a919062003be2565b9650965096509650965096509650336001600160a01b0316876001600160a01b031614620020e15760405162461bcd60e51b815260206004820152603060248201527f4272696467653a3a5f7065726d69743a205045524d49545f4f574e45525f4d5560448201527f53545f42455f5448455f53454e4445520000000000000000000000000000000060648201526084016200076c565b6001600160a01b0386163014620021615760405162461bcd60e51b815260206004820152602560248201527f4272696467653a3a5f7065726d69743a205350454e4445525f4d5553545f424560448201527f5f5448495300000000000000000000000000000000000000000000000000000060648201526084016200076c565b8a8514620021d85760405162461bcd60e51b815260206004820152602d60248201527f4272696467653a3a5f7065726d69743a205045524d49545f414d4f554e545f4460448201527f4f45535f4e4f545f4d415443480000000000000000000000000000000000000060648201526084016200076c565b604080516001600160a01b0389811660248301528881166044830152606482018890526084820187905260ff861660a483015260c4820185905260e48083018590528351808403909101815261010490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fd505accf000000000000000000000000000000000000000000000000000000001790529151918e169162002286919062003a78565b6000604051808303816000865af19150503d8060008114620022c5576040519150601f19603f3d011682016040523d82523d6000602084013e620022ca565b606091505b5050505050505050505062001409565b7fffffffff0000000000000000000000000000000000000000000000000000000081167f8fcbaf0c00000000000000000000000000000000000000000000000000000000146200236d5760405162461bcd60e51b815260206004820152601f60248201527f4272696467653a3a5f7065726d69743a204e4f545f56414c49445f43414c4c0060448201526064016200076c565b600080808080808080620023858a6004818e62003bb6565b81019062002394919062003c3d565b97509750975097509750975097509750336001600160a01b0316886001600160a01b0316146200242d5760405162461bcd60e51b815260206004820152603060248201527f4272696467653a3a5f7065726d69743a205045524d49545f4f574e45525f4d5560448201527f53545f42455f5448455f53454e4445520000000000000000000000000000000060648201526084016200076c565b6001600160a01b0387163014620024ad5760405162461bcd60e51b815260206004820152602560248201527f4272696467653a3a5f7065726d69743a205350454e4445525f4d5553545f424560448201527f5f5448495300000000000000000000000000000000000000000000000000000060648201526084016200076c565b604080516001600160a01b038a811660248301528981166044830152606482018990526084820188905286151560a483015260ff861660c483015260e482018590526101048083018590528351808403909101815261012490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f8fcbaf0c000000000000000000000000000000000000000000000000000000001790529151918f169162002564919062003a78565b6000604051808303816000865af19150503d8060008114620025a3576040519150601f19603f3d011682016040523d82523d6000602084013e620025a8565b606091505b50505050505050505050505050505050565b6040516001600160a01b03808516602483015283166044820152606481018290526200266d9085907f23b872dd00000000000000000000000000000000000000000000000000000000906084015b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915262002e8e565b50505050565b806001620026846020600262003e02565b62002690919062003e10565b60215410620027085760405162461bcd60e51b815260206004820152602a60248201527f4465706f736974436f6e74726163743a5f6465706f7369743a204d45524b4c4560448201527f5f545245455f46554c4c0000000000000000000000000000000000000000000060648201526084016200076c565b6001602160008282546200271d919062003e2a565b909155505060215460005b6020811015620027c757816001166001036200275d5782600182602081106200275557620027556200396a565b015550505050565b600181602081106200277357620027736200396a565b01546040805160208101929092528101849052606001604051602081830303815290604052805190602001209250600282620027b09190620039c8565b915080620027be8162003a04565b91505062002728565b50620027d262003e45565b505050565b60225460ff1615620028785760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a4016200076c565b6022805460ff191660011790556040517f2261efe5aef6fedc1fd1550b25facc9181745623049c7901287030b9ad1a549790600090a1565b63ffffffff8a1660009081526088602052604090205460ff16156200293d5760405162461bcd60e51b8152602060048201526024808201527f4272696467653a3a5f7665726966794c6561663a20414c52454144595f434c4160448201527f494d45440000000000000000000000000000000000000000000000000000000060648201526084016200076c565b608b546040805160208082018d90528183018c9052825180830384018152606083019384905280519101207f257b36320000000000000000000000000000000000000000000000000000000090925260648101919091526000916001600160a01b03169063257b3632906084016020604051808303816000875af1158015620029ca573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620029f0919062003e74565b9050801580159062002a0f5750608d5462002a0c824262003e10565b10155b62002a835760405162461bcd60e51b815260206004820152602d60248201527f4272696467653a3a5f7665726966794c6561663a20474c4f42414c5f4558495460448201527f5f524f4f545f494e56414c49440000000000000000000000000000000000000060648201526084016200076c565b60875463ffffffff87811691161462002b055760405162461bcd60e51b815260206004820152603760248201527f4272696467653a3a5f7665726966794c6561663a2044455354494e4154494f4e60448201527f5f4e4554574f524b5f444f45535f4e4f545f4d4154434800000000000000000060648201526084016200076c565b60875460009063ffffffff1662002b1e57508862002b21565b50895b8351602080860191909120604080517fff0000000000000000000000000000000000000000000000000000000000000060f888901b16818501527fffffffff0000000000000000000000000000000000000000000000000000000060e08e811b821660218401526bffffffffffffffffffffffff1960608f811b82166025860152918e901b90921660398401528b901b16603d82015260518101899052607180820193909352815180820390930183526091019052805191012062002bef908e8e63ffffffff168462000ea4565b62000c6b5760405162461bcd60e51b815260206004820181905260248201527f4272696467653a3a5f7665726966794c6561663a20534d545f494e56414c494460448201526064016200076c565b600054610100900460ff1662002cbc5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016200076c565b62000d2c3362002d23565b6055546001600160a01b0316331462000d2c5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016200076c565b605580546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6040516001600160a01b038316602482015260448101829052620027d29084907fa9059cbb000000000000000000000000000000000000000000000000000000009060640162002608565b60225460ff1662002e525760405162461bcd60e51b815260206004820152603b60248201527f456d657267656e63794d616e616765723a3a6966456d657267656e637953746160448201527f74653a206f6e6c7920696620656d657267656e6379207374617465000000000060648201526084016200076c565b6022805460ff191690556040517f1e5e34eea33501aecf2ebec9fe0e884a40804275ea7fe10b2ba084c8374308b390600090a1565b6020015190565b600062002ee5826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031662002f7a9092919063ffffffff16565b805190915015620027d2578080602001905181019062002f06919062003797565b620027d25760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016200076c565b606062002f8b848460008562002f95565b90505b9392505050565b6060824710156200300f5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c000000000000000000000000000000000000000000000000000060648201526084016200076c565b6001600160a01b0385163b620030685760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016200076c565b600080866001600160a01b0316858760405162003086919062003a78565b60006040518083038185875af1925050503d8060008114620030c5576040519150601f19603f3d011682016040523d82523d6000602084013e620030ca565b606091505b5091509150620030dc828286620030e7565b979650505050505050565b60608315620030f857508162002f8e565b825115620031095782518084602001fd5b8160405162461bcd60e51b81526004016200076c919062003e8e565b611a788062003ea483390190565b6001600160a01b038116811462001f9257600080fd5b8035620031568162003133565b919050565b803563ffffffff811681146200315657600080fd5b60008083601f8401126200318357600080fd5b50813567ffffffffffffffff8111156200319c57600080fd5b602083019150836020828501011115620031b557600080fd5b9250929050565b60008060008060008060a08789031215620031d657600080fd5b8635620031e38162003133565b9550620031f3602088016200315b565b94506040870135620032058162003133565b935060608701359250608087013567ffffffffffffffff8111156200322957600080fd5b6200323789828a0162003170565b979a9699509497509295939492505050565b600080604083850312156200325d57600080fd5b62003268836200315b565b915060208301356200327a8162003133565b809150509250929050565b6000602082840312156200329857600080fd5b813562002f8e8162003133565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715620033005762003300620032a5565b604052919050565b600082601f8301126200331a57600080fd5b8135602067ffffffffffffffff821115620033395762003339620032a5565b8160051b6200334a828201620032d4565b92835284810182019282810190878511156200336557600080fd5b83870192505b84831015620030dc578235825291830191908301906200336b565b600080600080608085870312156200339d57600080fd5b84359350602085013567ffffffffffffffff80821115620033bd57600080fd5b620033cb8883890162003308565b9450604087013591508082168214620033e357600080fd5b509396929550929360600135925050565b60ff8116811462001f9257600080fd5b600080600080600080600060e0888a0312156200342057600080fd5b87356200342d81620033f4565b96506200343d602089016200315b565b955060408801356200344f8162003133565b94506200345f606089016200315b565b93506080880135620034718162003133565b9699959850939692959460a0840135945060c09093013592915050565b600067ffffffffffffffff821115620034ab57620034ab620032a5565b50601f01601f191660200190565b600082601f830112620034cb57600080fd5b8135620034e2620034dc826200348e565b620032d4565b818152846020838601011115620034f857600080fd5b816020850160208301376000918101602001919091529392505050565b6000806000806000806000806000806101408b8d0312156200353657600080fd5b8a3567ffffffffffffffff808211156200354f57600080fd5b6200355d8e838f0162003308565b9b506200356d60208e016200315b565b9a5060408d0135995060608d013598506200358b60808e016200315b565b97506200359b60a08e0162003149565b9650620035ab60c08e016200315b565b9550620035bb60e08e0162003149565b94506101008d013593506101208d0135915080821115620035db57600080fd5b50620035ea8d828e01620034b9565b9150509295989b9194979a5092959850565b600080600080608085870312156200361357600080fd5b6200361e856200315b565b93506020850135620036308162003133565b92506040850135620036428162003133565b9396929550929360600135925050565b6000602082840312156200366557600080fd5b5035919050565b600080600080600080600060a0888a0312156200368857600080fd5b62003693886200315b565b96506020880135620036a58162003133565b9550604088013567ffffffffffffffff80821115620036c357600080fd5b620036d18b838c0162003170565b909750955060608a0135915080821115620036eb57600080fd5b50620036fa8a828b0162003170565b90945092505060808801356200371081620033f4565b8091505092959891949750929550565b6000806000606084860312156200373657600080fd5b62003741846200315b565b92506020840135620037538162003133565b9150604084013567ffffffffffffffff8111156200377057600080fd5b6200377e86828701620034b9565b9150509250925092565b801515811462001f9257600080fd5b600060208284031215620037aa57600080fd5b815162002f8e8162003788565b60005b83811015620037d4578181015183820152602001620037ba565b838111156200266d5750506000910152565b600082601f830112620037f857600080fd5b815162003809620034dc826200348e565b8181528460208386010111156200381f57600080fd5b62003832826020830160208701620037b7565b949350505050565b6000602082840312156200384d57600080fd5b815167ffffffffffffffff8111156200386557600080fd5b6200383284828501620037e6565b6000602082840312156200388657600080fd5b815162002f8e81620033f4565b60008151808452620038ad816020860160208601620037b7565b601f01601f19169290920160200192915050565b606081526000620038d6606083018662003893565b8281036020840152620038ea818662003893565b91505060ff83166040830152949350505050565b600061010060ff8b16835263ffffffff808b1660208501526001600160a01b03808b166040860152818a1660608601528089166080860152508660a08501528160c0850152620039518285018762003893565b925080851660e085015250509998505050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082620039ff577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820362003a385762003a3862003999565b5060010190565b6001600160a01b038416815263ffffffff8316602082015260606040820152600062003a6f606083018462003893565b95945050505050565b6000825162003a8c818460208701620037b7565b9190910192915050565b60008060006060848603121562003aac57600080fd5b835167ffffffffffffffff8082111562003ac557600080fd5b62003ad387838801620037e6565b9450602086015191508082111562003aea57600080fd5b5062003af986828701620037e6565b925050604084015162003b0c81620033f4565b809150509250925092565b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b60608152600062003b5860608301878962003b17565b828103602084015262003b6d81868862003b17565b91505060ff831660408301529695505050505050565b6000835162003b97818460208801620037b7565b83519083019062003bad818360208801620037b7565b01949350505050565b6000808585111562003bc757600080fd5b8386111562003bd557600080fd5b5050820193919092039150565b600080600080600080600060e0888a03121562003bfe57600080fd5b873562003c0b8162003133565b9650602088013562003c1d8162003133565b9550604088013594506060880135935060808801356200347181620033f4565b600080600080600080600080610100898b03121562003c5b57600080fd5b883562003c688162003133565b9750602089013562003c7a8162003133565b96506040890135955060608901359450608089013562003c9a8162003788565b935060a089013562003cac81620033f4565b979a969950949793969295929450505060c08201359160e0013590565b600181815b8085111562003d2857817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111562003d0c5762003d0c62003999565b8085161562003d1a57918102915b93841c939080029062003cce565b509250929050565b60008262003d415750600162000dab565b8162003d505750600062000dab565b816001811462003d69576002811462003d745762003d94565b600191505062000dab565b60ff84111562003d885762003d8862003999565b50506001821b62000dab565b5060208310610133831016604e8410600b841016171562003db9575081810a62000dab565b62003dc5838362003cc9565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111562003dfa5762003dfa62003999565b029392505050565b600062002f8e838362003d30565b60008282101562003e255762003e2562003999565b500390565b6000821982111562003e405762003e4062003999565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b60006020828403121562003e8757600080fd5b5051919050565b60208152600062002f8e60208301846200389356fe60c06040523480156200001157600080fd5b5060405162001a7838038062001a788339810160408190526200003491620002ad565b82826003620000448382620003c1565b506004620000538282620003c1565b5050600580546001600160a81b0319163360ff60a01b191617600160a01b60ff851602179055504660808190526200008b9062000098565b60a052506200048d915050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f620000c562000146565b805160209182012060408051808201825260018152603160f81b90840152805192830193909352918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060820152608081018390523060a082015260c001604051602081830303815290604052805190602001209050919050565b606060038054620001579062000332565b80601f0160208091040260200160405190810160405280929190818152602001828054620001859062000332565b8015620001d65780601f10620001aa57610100808354040283529160200191620001d6565b820191906000526020600020905b815481529060010190602001808311620001b857829003601f168201915b5050505050905090565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200020857600080fd5b81516001600160401b0380821115620002255762000225620001e0565b604051601f8301601f19908116603f01168101908282118183101715620002505762000250620001e0565b816040528381526020925086838588010111156200026d57600080fd5b600091505b8382101562000291578582018301518183018401529082019062000272565b83821115620002a35760008385830101525b9695505050505050565b600080600060608486031215620002c357600080fd5b83516001600160401b0380821115620002db57600080fd5b620002e987838801620001f6565b945060208601519150808211156200030057600080fd5b506200030f86828701620001f6565b925050604084015160ff811681146200032757600080fd5b809150509250925092565b600181811c908216806200034757607f821691505b6020821081036200036857634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620003bc57600081815260208120601f850160051c81016020861015620003975750805b601f850160051c820191505b81811015620003b857828155600101620003a3565b5050505b505050565b81516001600160401b03811115620003dd57620003dd620001e0565b620003f581620003ee845462000332565b846200036e565b602080601f8311600181146200042d5760008415620004145750858301515b600019600386901b1c1916600185901b178555620003b8565b600085815260208120601f198616915b828110156200045e578886015182559484019460019091019084016200043d565b50858210156200047d5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60805160a0516115be620004ba600039600061053001526000818161036f01526104fa01526115be6000f3fe608060405234801561001057600080fd5b50600436106101775760003560e01c806370a08231116100d8578063a457c2d71161008c578063d505accf11610066578063d505accf14610391578063dd62ed3e146103a6578063ffa1ad74146103ec57600080fd5b8063a457c2d714610344578063a9059cbb14610357578063cd0d00961461036a57600080fd5b806395d89b41116100bd57806395d89b41146102e45780639dc29fac146102ec578063a3c573eb146102ff57600080fd5b806370a082311461028e5780637ecebe00146102c457600080fd5b806330adf81f1161012f5780633644e515116101145780633644e51514610260578063395093511461026857806340c10f191461027b57600080fd5b806330adf81f14610209578063313ce5671461023057600080fd5b806318160ddd1161016057806318160ddd146101bd57806320606b70146101cf57806323b872dd146101f657600080fd5b806306fdde031461017c578063095ea7b31461019a575b600080fd5b610184610428565b60405161019191906112d5565b60405180910390f35b6101ad6101a8366004611371565b6104ba565b6040519015158152602001610191565b6002545b604051908152602001610191565b6101c17f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81565b6101ad61020436600461139b565b6104d2565b6101c17f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b60055474010000000000000000000000000000000000000000900460ff1660405160ff9091168152602001610191565b6101c16104f6565b6101ad610276366004611371565b610552565b6101ad610289366004611371565b61059e565b6101c161029c3660046113d7565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6101c16102d23660046113d7565b60066020526000908152604090205481565b610184610645565b6101ad6102fa366004611371565b610654565b60055461031f9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610191565b6101ad610352366004611371565b6106ed565b6101ad610365366004611371565b6107a4565b6101c17f000000000000000000000000000000000000000000000000000000000000000081565b6103a461039f3660046113f9565b6107b2565b005b6101c16103b436600461146c565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6101846040518060400160405280600181526020017f310000000000000000000000000000000000000000000000000000000000000081525081565b6060600380546104379061149f565b80601f01602080910402602001604051908101604052809291908181526020018280546104639061149f565b80156104b05780601f10610485576101008083540402835291602001916104b0565b820191906000526020600020905b81548152906001019060200180831161049357829003601f168201915b5050505050905090565b6000336104c8818585610ab4565b5060019392505050565b6000336104e0858285610c34565b6104eb858585610cf1565b506001949350505050565b60007f0000000000000000000000000000000000000000000000000000000000000000461461052d5761052846610f56565b905090565b507f000000000000000000000000000000000000000000000000000000000000000090565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906104c89082908690610599908790611521565b610ab4565b60055460009073ffffffffffffffffffffffffffffffffffffffff1633146106325760405162461bcd60e51b8152602060048201526024808201527f546f6b656e577261707065643a3a6f6e6c794272696467653a204e4f545f425260448201527f494447450000000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b61063c838361101e565b50600192915050565b6060600480546104379061149f565b60055460009073ffffffffffffffffffffffffffffffffffffffff1633146106e35760405162461bcd60e51b8152602060048201526024808201527f546f6b656e577261707065643a3a6f6e6c794272696467653a204e4f545f425260448201527f49444745000000000000000000000000000000000000000000000000000000006064820152608401610629565b61063c8383611124565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190838110156107975760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f0000000000000000000000000000000000000000000000000000006064820152608401610629565b6104eb8286868403610ab4565b6000336104c8818585610cf1565b834211156108275760405162461bcd60e51b8152602060048201526024808201527f546f6b656e577261707065643a3a7065726d69743a204578706972656420706560448201527f726d6974000000000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff8716600090815260066020526040812080547f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918a918a918a91908661088183611539565b9091555060408051602081019690965273ffffffffffffffffffffffffffffffffffffffff94851690860152929091166060840152608083015260a082015260c0810186905260e00160405160208183030381529060405280519060200120905060006108ec6104f6565b6040517f19010000000000000000000000000000000000000000000000000000000000006020820152602281019190915260428101839052606201604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282528051602091820120600080855291840180845281905260ff89169284019290925260608301879052608083018690529092509060019060a0016020604051602081039080840390855afa1580156109b0573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811615801590610a2b57508973ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b610a9d5760405162461bcd60e51b815260206004820152602760248201527f546f6b656e577261707065643a3a7065726d69743a20496e76616c696420736960448201527f676e6174757265000000000000000000000000000000000000000000000000006064820152608401610629565b610aa88a8a8a610ab4565b50505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff8316610b3c5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff8216610bc55760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610ceb5781811015610cde5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610629565b610ceb8484848403610ab4565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610d7a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff8216610e035760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610e9f5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260208190526040808220858503905591851681529081208054849290610ee3908490611521565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610f4991815260200190565b60405180910390a3610ceb565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f610f81610428565b8051602091820120604080518082018252600181527f310000000000000000000000000000000000000000000000000000000000000090840152805192830193909352918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060820152608081018390523060a082015260c001604051602081830303815290604052805190602001209050919050565b73ffffffffffffffffffffffffffffffffffffffff82166110815760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610629565b80600260008282546110939190611521565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600090815260208190526040812080548392906110cd908490611521565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b73ffffffffffffffffffffffffffffffffffffffff82166111ad5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260208190526040902054818110156112495760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f63650000000000000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff83166000908152602081905260408120838303905560028054849290611285908490611571565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610c27565b600060208083528351808285015260005b81811015611302578581018301518582016040015282016112e6565b81811115611314576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461136c57600080fd5b919050565b6000806040838503121561138457600080fd5b61138d83611348565b946020939093013593505050565b6000806000606084860312156113b057600080fd5b6113b984611348565b92506113c760208501611348565b9150604084013590509250925092565b6000602082840312156113e957600080fd5b6113f282611348565b9392505050565b600080600080600080600060e0888a03121561141457600080fd5b61141d88611348565b965061142b60208901611348565b95506040880135945060608801359350608088013560ff8116811461144f57600080fd5b9699959850939692959460a0840135945060c09093013592915050565b6000806040838503121561147f57600080fd5b61148883611348565b915061149660208401611348565b90509250929050565b600181811c908216806114b357607f821691505b6020821081036114ec577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008219821115611534576115346114f2565b500190565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361156a5761156a6114f2565b5060010190565b600082821015611583576115836114f2565b50039056fea2646970667358221220dc9c54325b6ec8c11c8bc6a1630cfb64202b6d54611cd1004e705ceca7826a4f64736f6c634300080f0033a2646970667358221220cd5d627eb44db0ac502a5df7e6b4905941374829b022d6f8f6fd4be1a279530c64736f6c634300080f0033", - "deployedBytecode": "0x608060405260043610620001db5760003560e01c806381b1c17411620000ff578063d96a15f71162000095578063e7a5b4ea116200006c578063e7a5b4ea1462000658578063ed6be5c9146200067d578063f2fde38b1462000694578063ff634ed714620006b957600080fd5b8063d96a15f714620005f5578063dbc16976146200060c578063e7375881146200062457600080fd5b8063a08e8a0811620000d6578063a08e8a08146200054f578063aaa13cc21462000579578063bab161bf146200059e578063d02103ca14620005d357600080fd5b806381b1c17414620004d35780638da5cb5b146200050d5780638f611519146200052d57600080fd5b80633ae05047116200017557806346385549116200014c57806346385549146200044c578063655595401462000471578063715018a614620004965780637b6323c114620004ae57600080fd5b80633ae05047146200032e5780633da8168214620003465780633e197043146200036b57600080fd5b80632072f6c511620001b65780632072f6c5146200025157806322e95f2c14620002695780632dfdf0b514620002a7578063318aee3d14620002bf57600080fd5b80630871e97114620001e05780630e1da6c314620001f957806315064c961462000224575b600080fd5b620001f7620001f1366004620031bc565b620006d0565b005b3480156200020657600080fd5b5062000211608d5481565b6040519081526020015b60405180910390f35b3480156200023157600080fd5b50602254620002409060ff1681565b60405190151581526020016200021b565b3480156200025e57600080fd5b50620001f762000c7a565b3480156200027657600080fd5b506200028e6200028836600462003249565b62000d2e565b6040516001600160a01b0390911681526020016200021b565b348015620002b457600080fd5b506200021160215481565b348015620002cc57600080fd5b5062000309620002de36600462003285565b608a6020526000908152604090205463ffffffff81169064010000000090046001600160a01b031682565b6040805163ffffffff90931683526001600160a01b039091166020830152016200021b565b3480156200033b57600080fd5b506200021162000db1565b3480156200035357600080fd5b50620002406200036536600462003386565b62000ea4565b3480156200037857600080fd5b50620002116200038a36600462003404565b6040517fff0000000000000000000000000000000000000000000000000000000000000060f889901b1660208201527fffffffff0000000000000000000000000000000000000000000000000000000060e088811b821660218401526bffffffffffffffffffffffff19606089811b821660258601529188901b909216603984015285901b16603d8201526051810183905260718101829052600090609101604051602081830303815290604052805190602001209050979650505050505050565b3480156200045957600080fd5b50620001f76200046b36600462003515565b62000fa4565b3480156200047e57600080fd5b50620001f762000490366004620035fc565b6200122a565b348015620004a357600080fd5b50620001f762001410565b348015620004bb57600080fd5b50620001f7620004cd36600462003515565b62001426565b348015620004e057600080fd5b506200028e620004f236600462003652565b6089602052600090815260409020546001600160a01b031681565b3480156200051a57600080fd5b506055546001600160a01b03166200028e565b3480156200053a57600080fd5b50608c546200028e906001600160a01b031681565b3480156200055c57600080fd5b5062000566600081565b60405160ff90911681526020016200021b565b3480156200058657600080fd5b506200028e620005983660046200366c565b620019e8565b348015620005ab57600080fd5b50608754620005bd9063ffffffff1681565b60405163ffffffff90911681526020016200021b565b348015620005e057600080fd5b50608b546200028e906001600160a01b031681565b620001f76200060636600462003720565b62001b54565b3480156200061957600080fd5b50620001f762001e08565b3480156200063157600080fd5b50620002406200064336600462003652565b60886020526000908152604090205460ff1681565b3480156200066557600080fd5b50620001f76200067736600462003652565b62001eba565b3480156200068a57600080fd5b50620005bd600081565b348015620006a157600080fd5b50620001f7620006b336600462003285565b62001eff565b348015620006c657600080fd5b5062000566600181565b60225460ff1615620007755760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a4015b60405180910390fd5b60875463ffffffff90811690861603620007f85760405162461bcd60e51b815260206004820152602a60248201527f4272696467653a3a6272696467653a2044455354494e4154494f4e5f43414e5460448201527f5f42455f495453454c460000000000000000000000000000000000000000000060648201526084016200076c565b60008060606001600160a01b0389166200088d57853414620008835760405162461bcd60e51b815260206004820152602f60248201527f4272696467653a3a6272696467653a20414d4f554e545f444f45535f4e4f545f60448201527f4d415443485f4d53475f56414c5545000000000000000000000000000000000060648201526084016200076c565b6000915062000b17565b6001600160a01b03808a166000908152608a602090815260409182902082518084019093525463ffffffff811683526401000000009004909216918101829052901562000974576040517f9dc29fac000000000000000000000000000000000000000000000000000000008152336004820152602481018890526001600160a01b038b1690639dc29fac906044016020604051808303816000875af11580156200093b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000961919062003797565b5060208101518151909450925062000b15565b84156200098957620009898a88888862001f95565b620009a06001600160a01b038b1633308a620025ba565b899350608760009054906101000a900463ffffffff169250896001600160a01b03166306fdde036040518163ffffffff1660e01b8152600401600060405180830381865afa158015620009f7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000a2191908101906200383a565b8a6001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa15801562000a60573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000a8a91908101906200383a565b8b6001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000ac9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000aef919062003873565b60405160200162000b0393929190620038c1565b60405160208183030381529060405291505b505b7f501781209a1f8899323b96b4ef08b168df93e0a90c673d1e4cce39366cb62f9b600083858b8b8b8760215460405162000b59989796959493929190620038fe565b60405180910390a18051602080830191909120604080516000818501527fffffffff0000000000000000000000000000000000000000000000000000000060e087811b821660218401526bffffffffffffffffffffffff1960608a811b82166025860152918f901b90921660398401528c901b16603d820152605181018a9052607180820193909352815180820390930183526091019052805191012062000c019062002673565b608b546001600160a01b03166333d6247d62000c1c62000db1565b6040518263ffffffff1660e01b815260040162000c3b91815260200190565b600060405180830381600087803b15801562000c5657600080fd5b505af115801562000c6b573d6000803e3d6000fd5b50505050505050505050505050565b608c546001600160a01b0316331462000d225760405162461bcd60e51b815260206004820152604b60248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7950726f6f664f66456660448201527f66696369656e63793a206f6e6c792050726f6f66206f6620456666696369656e60648201527f637920636f6e7472616374000000000000000000000000000000000000000000608482015260a4016200076c565b62000d2c620027d7565b565b6040805160e084901b7fffffffff0000000000000000000000000000000000000000000000000000000016602080830191909152606084901b6bffffffffffffffffffffffff1916602483015282516018818403018152603890920183528151918101919091206000908152608990915220546001600160a01b03165b92915050565b602154600090819081805b602081101562000e9b578260011660010362000e1c576001816020811062000de85762000de86200396a565b0154604080516020810192909252810185905260600160405160208183030381529060405280519060200120935062000e49565b60408051602081018690529081018390526060016040516020818303038152906040528051906020012093505b62000e56600284620039c8565b6040805160208101859052908101849052909350606001604051602081830303815290604052805190602001209150808062000e929062003a04565b91505062000dbc565b50919392505050565b60008467ffffffffffffffff8416825b602081101562000f97578160011660010362000f215786818151811062000edf5762000edf6200396a565b60200260200101518360405160200162000f03929190918252602082015260400190565b60405160208183030381529060405280519060200120925062000f73565b8287828151811062000f375762000f376200396a565b602002602001015160405160200162000f5a929190918252602082015260400190565b6040516020818303038152906040528051906020012092505b62000f80600283620039c8565b91508062000f8e8162003a04565b91505062000eb4565b5050909114949350505050565b60225460ff1615620010455760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a4016200076c565b6200105b8a8a8a8a8a8a8a8a8a8a6001620028b0565b63ffffffff8916600090815260886020526040808220805460ff19166001179055516001600160a01b0385169084906200109e9089908b90879060240162003a3f565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1806b5f2000000000000000000000000000000000000000000000000000000001790525162001103919062003a78565b60006040518083038185875af1925050503d806000811462001142576040519150601f19603f3d011682016040523d82523d6000602084013e62001147565b606091505b5050905080620011bf5760405162461bcd60e51b8152602060048201526024808201527f4272696467653a3a636c61696d4d6573736167653a204d4553534147455f464160448201527f494c45440000000000000000000000000000000000000000000000000000000060648201526084016200076c565b6040805163ffffffff8c81168252891660208201526001600160a01b0388811682840152861660608201526080810185905290517f25308c93ceeed162da955b3f7ce3e3f93606579e40fb92029faa9efe275459839181900360a00190a15050505050505050505050565b600054610100900460ff16158080156200124b5750600054600160ff909116105b80620012675750303b15801562001267575060005460ff166001145b620012db5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016200076c565b6000805460ff1916600117905580156200131c57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6087805463ffffffff87167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000909116179055608b80546001600160a01b038087167fffffffffffffffffffffffff000000000000000000000000000000000000000092831617909255608c805492861692909116919091179055608d829055620013a562002c3d565b80156200140957600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b6200141a62002cc7565b62000d2c600062002d23565b60225460ff1615620014c75760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a4016200076c565b620014dd8a8a8a8a8a8a8a8a8a8a6000620028b0565b63ffffffff89166000908152608860205260409020805460ff191660011790556001600160a01b038516620015fc57604080516000808252602082019092526001600160a01b03851690849060405162001538919062003a78565b60006040518083038185875af1925050503d806000811462001577576040519150601f19603f3d011682016040523d82523d6000602084013e6200157c565b606091505b5050905080620015f55760405162461bcd60e51b815260206004820152602760248201527f4272696467653a3a636c61696d41737365743a204554485f5452414e5346455260448201527f5f4641494c45440000000000000000000000000000000000000000000000000060648201526084016200076c565b506200197e565b60875463ffffffff908116908716036200162c57620016266001600160a01b038616848462002d8d565b6200197e565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e088901b1660208201526bffffffffffffffffffffffff19606087901b16602482015260009060380160408051601f198184030181529181528151602092830120600081815260899093529120549091506001600160a01b031680620018ea57600080600085806020019051810190620016cc919062003a96565b925092509250600085848484604051620016e69062003125565b620016f493929190620038c1565b8190604051809103906000f590508015801562001715573d6000803e3d6000fd5b506040517f40c10f190000000000000000000000000000000000000000000000000000000081526001600160a01b038b81166004830152602482018b9052919250908216906340c10f19906044016020604051808303816000875af115801562001783573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620017a9919062003797565b50806089600088815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060405180604001604052808d63ffffffff1681526020018c6001600160a01b0316815250608a6000836001600160a01b03166001600160a01b0316815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a8154816001600160a01b0302191690836001600160a01b031602179055509050507fccd7715648d1f2bb13e158f96b5b6c3aeda555d4cb87112e274a6f28bc571d598c8c83604051620018d89392919063ffffffff9390931683526001600160a01b03918216602084015216604082015260600190565b60405180910390a1505050506200197b565b6040517f40c10f190000000000000000000000000000000000000000000000000000000081526001600160a01b038681166004830152602482018690528216906340c10f19906044016020604051808303816000875af115801562001953573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001979919062003797565b505b50505b6040805163ffffffff8b81168252881660208201526001600160a01b0387811682840152851660608201526080810184905290517f25308c93ceeed162da955b3f7ce3e3f93606579e40fb92029faa9efe275459839181900360a00190a150505050505050505050565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e089901b1660208201526bffffffffffffffffffffffff19606088901b1660248201526000908190603801604051602081830303815290604052805190602001209050600060ff60f81b30836040518060200162001a6b9062003125565b601f1982820381018352601f90910116604081905262001a98908d908d908d908d908d9060200162003b42565b60408051601f198184030181529082905262001ab8929160200162003b83565b6040516020818303038152906040528051906020012060405160200162001b2e94939291907fff0000000000000000000000000000000000000000000000000000000000000094909416845260609290921b6bffffffffffffffffffffffff191660018401526015830152603582015260550190565b60408051808303601f1901815291905280516020909101209a9950505050505050505050565b60225460ff161562001bf55760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a4016200076c565b60875463ffffffff9081169084160362001c785760405162461bcd60e51b815260206004820152602a60248201527f4272696467653a3a6272696467653a2044455354494e4154494f4e5f43414e5460448201527f5f42455f495453454c460000000000000000000000000000000000000000000060648201526084016200076c565b6087546021546040517f501781209a1f8899323b96b4ef08b168df93e0a90c673d1e4cce39366cb62f9b9262001cc59260019263ffffffff9092169133918991899134918a9190620038fe565b60405180910390a16087548151602080840191909120604080517f0100000000000000000000000000000000000000000000000000000000000000818501527fffffffff0000000000000000000000000000000000000000000000000000000060e095861b811660218301526bffffffffffffffffffffffff1933606090811b82166025850152968a901b90911660398301529487901b909416603d850152346051850152607180850192909252805180850390920182526091909301909252815191012062001d959062002673565b608b546001600160a01b03166333d6247d62001db062000db1565b6040518263ffffffff1660e01b815260040162001dcf91815260200190565b600060405180830381600087803b15801562001dea57600080fd5b505af115801562001dff573d6000803e3d6000fd5b50505050505050565b608c546001600160a01b0316331462001eb05760405162461bcd60e51b815260206004820152604b60248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7950726f6f664f66456660448201527f66696369656e63793a206f6e6c792050726f6f66206f6620456666696369656e60648201527f637920636f6e7472616374000000000000000000000000000000000000000000608482015260a4016200076c565b62000d2c62002dd8565b62001ec462002cc7565b608d8190556040518181527f126d6a8888996898896a660f1c9a7a4ef612bd6df82281a13079dd27cc38758d9060200160405180910390a150565b62001f0962002cc7565b6001600160a01b03811662001f875760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016200076c565b62001f928162002d23565b50565b600062001fd883838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525062002e8792505050565b90507f2afa5331000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000821601620022da5760008080808080806200203b896004818d62003bb6565b8101906200204a919062003be2565b9650965096509650965096509650336001600160a01b0316876001600160a01b031614620020e15760405162461bcd60e51b815260206004820152603060248201527f4272696467653a3a5f7065726d69743a205045524d49545f4f574e45525f4d5560448201527f53545f42455f5448455f53454e4445520000000000000000000000000000000060648201526084016200076c565b6001600160a01b0386163014620021615760405162461bcd60e51b815260206004820152602560248201527f4272696467653a3a5f7065726d69743a205350454e4445525f4d5553545f424560448201527f5f5448495300000000000000000000000000000000000000000000000000000060648201526084016200076c565b8a8514620021d85760405162461bcd60e51b815260206004820152602d60248201527f4272696467653a3a5f7065726d69743a205045524d49545f414d4f554e545f4460448201527f4f45535f4e4f545f4d415443480000000000000000000000000000000000000060648201526084016200076c565b604080516001600160a01b0389811660248301528881166044830152606482018890526084820187905260ff861660a483015260c4820185905260e48083018590528351808403909101815261010490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fd505accf000000000000000000000000000000000000000000000000000000001790529151918e169162002286919062003a78565b6000604051808303816000865af19150503d8060008114620022c5576040519150601f19603f3d011682016040523d82523d6000602084013e620022ca565b606091505b5050505050505050505062001409565b7fffffffff0000000000000000000000000000000000000000000000000000000081167f8fcbaf0c00000000000000000000000000000000000000000000000000000000146200236d5760405162461bcd60e51b815260206004820152601f60248201527f4272696467653a3a5f7065726d69743a204e4f545f56414c49445f43414c4c0060448201526064016200076c565b600080808080808080620023858a6004818e62003bb6565b81019062002394919062003c3d565b97509750975097509750975097509750336001600160a01b0316886001600160a01b0316146200242d5760405162461bcd60e51b815260206004820152603060248201527f4272696467653a3a5f7065726d69743a205045524d49545f4f574e45525f4d5560448201527f53545f42455f5448455f53454e4445520000000000000000000000000000000060648201526084016200076c565b6001600160a01b0387163014620024ad5760405162461bcd60e51b815260206004820152602560248201527f4272696467653a3a5f7065726d69743a205350454e4445525f4d5553545f424560448201527f5f5448495300000000000000000000000000000000000000000000000000000060648201526084016200076c565b604080516001600160a01b038a811660248301528981166044830152606482018990526084820188905286151560a483015260ff861660c483015260e482018590526101048083018590528351808403909101815261012490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f8fcbaf0c000000000000000000000000000000000000000000000000000000001790529151918f169162002564919062003a78565b6000604051808303816000865af19150503d8060008114620025a3576040519150601f19603f3d011682016040523d82523d6000602084013e620025a8565b606091505b50505050505050505050505050505050565b6040516001600160a01b03808516602483015283166044820152606481018290526200266d9085907f23b872dd00000000000000000000000000000000000000000000000000000000906084015b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915262002e8e565b50505050565b806001620026846020600262003e02565b62002690919062003e10565b60215410620027085760405162461bcd60e51b815260206004820152602a60248201527f4465706f736974436f6e74726163743a5f6465706f7369743a204d45524b4c4560448201527f5f545245455f46554c4c0000000000000000000000000000000000000000000060648201526084016200076c565b6001602160008282546200271d919062003e2a565b909155505060215460005b6020811015620027c757816001166001036200275d5782600182602081106200275557620027556200396a565b015550505050565b600181602081106200277357620027736200396a565b01546040805160208101929092528101849052606001604051602081830303815290604052805190602001209250600282620027b09190620039c8565b915080620027be8162003a04565b91505062002728565b50620027d262003e45565b505050565b60225460ff1615620028785760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a4016200076c565b6022805460ff191660011790556040517f2261efe5aef6fedc1fd1550b25facc9181745623049c7901287030b9ad1a549790600090a1565b63ffffffff8a1660009081526088602052604090205460ff16156200293d5760405162461bcd60e51b8152602060048201526024808201527f4272696467653a3a5f7665726966794c6561663a20414c52454144595f434c4160448201527f494d45440000000000000000000000000000000000000000000000000000000060648201526084016200076c565b608b546040805160208082018d90528183018c9052825180830384018152606083019384905280519101207f257b36320000000000000000000000000000000000000000000000000000000090925260648101919091526000916001600160a01b03169063257b3632906084016020604051808303816000875af1158015620029ca573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620029f0919062003e74565b9050801580159062002a0f5750608d5462002a0c824262003e10565b10155b62002a835760405162461bcd60e51b815260206004820152602d60248201527f4272696467653a3a5f7665726966794c6561663a20474c4f42414c5f4558495460448201527f5f524f4f545f494e56414c49440000000000000000000000000000000000000060648201526084016200076c565b60875463ffffffff87811691161462002b055760405162461bcd60e51b815260206004820152603760248201527f4272696467653a3a5f7665726966794c6561663a2044455354494e4154494f4e60448201527f5f4e4554574f524b5f444f45535f4e4f545f4d4154434800000000000000000060648201526084016200076c565b60875460009063ffffffff1662002b1e57508862002b21565b50895b8351602080860191909120604080517fff0000000000000000000000000000000000000000000000000000000000000060f888901b16818501527fffffffff0000000000000000000000000000000000000000000000000000000060e08e811b821660218401526bffffffffffffffffffffffff1960608f811b82166025860152918e901b90921660398401528b901b16603d82015260518101899052607180820193909352815180820390930183526091019052805191012062002bef908e8e63ffffffff168462000ea4565b62000c6b5760405162461bcd60e51b815260206004820181905260248201527f4272696467653a3a5f7665726966794c6561663a20534d545f494e56414c494460448201526064016200076c565b600054610100900460ff1662002cbc5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016200076c565b62000d2c3362002d23565b6055546001600160a01b0316331462000d2c5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016200076c565b605580546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6040516001600160a01b038316602482015260448101829052620027d29084907fa9059cbb000000000000000000000000000000000000000000000000000000009060640162002608565b60225460ff1662002e525760405162461bcd60e51b815260206004820152603b60248201527f456d657267656e63794d616e616765723a3a6966456d657267656e637953746160448201527f74653a206f6e6c7920696620656d657267656e6379207374617465000000000060648201526084016200076c565b6022805460ff191690556040517f1e5e34eea33501aecf2ebec9fe0e884a40804275ea7fe10b2ba084c8374308b390600090a1565b6020015190565b600062002ee5826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031662002f7a9092919063ffffffff16565b805190915015620027d2578080602001905181019062002f06919062003797565b620027d25760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016200076c565b606062002f8b848460008562002f95565b90505b9392505050565b6060824710156200300f5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c000000000000000000000000000000000000000000000000000060648201526084016200076c565b6001600160a01b0385163b620030685760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016200076c565b600080866001600160a01b0316858760405162003086919062003a78565b60006040518083038185875af1925050503d8060008114620030c5576040519150601f19603f3d011682016040523d82523d6000602084013e620030ca565b606091505b5091509150620030dc828286620030e7565b979650505050505050565b60608315620030f857508162002f8e565b825115620031095782518084602001fd5b8160405162461bcd60e51b81526004016200076c919062003e8e565b611a788062003ea483390190565b6001600160a01b038116811462001f9257600080fd5b8035620031568162003133565b919050565b803563ffffffff811681146200315657600080fd5b60008083601f8401126200318357600080fd5b50813567ffffffffffffffff8111156200319c57600080fd5b602083019150836020828501011115620031b557600080fd5b9250929050565b60008060008060008060a08789031215620031d657600080fd5b8635620031e38162003133565b9550620031f3602088016200315b565b94506040870135620032058162003133565b935060608701359250608087013567ffffffffffffffff8111156200322957600080fd5b6200323789828a0162003170565b979a9699509497509295939492505050565b600080604083850312156200325d57600080fd5b62003268836200315b565b915060208301356200327a8162003133565b809150509250929050565b6000602082840312156200329857600080fd5b813562002f8e8162003133565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715620033005762003300620032a5565b604052919050565b600082601f8301126200331a57600080fd5b8135602067ffffffffffffffff821115620033395762003339620032a5565b8160051b6200334a828201620032d4565b92835284810182019282810190878511156200336557600080fd5b83870192505b84831015620030dc578235825291830191908301906200336b565b600080600080608085870312156200339d57600080fd5b84359350602085013567ffffffffffffffff80821115620033bd57600080fd5b620033cb8883890162003308565b9450604087013591508082168214620033e357600080fd5b509396929550929360600135925050565b60ff8116811462001f9257600080fd5b600080600080600080600060e0888a0312156200342057600080fd5b87356200342d81620033f4565b96506200343d602089016200315b565b955060408801356200344f8162003133565b94506200345f606089016200315b565b93506080880135620034718162003133565b9699959850939692959460a0840135945060c09093013592915050565b600067ffffffffffffffff821115620034ab57620034ab620032a5565b50601f01601f191660200190565b600082601f830112620034cb57600080fd5b8135620034e2620034dc826200348e565b620032d4565b818152846020838601011115620034f857600080fd5b816020850160208301376000918101602001919091529392505050565b6000806000806000806000806000806101408b8d0312156200353657600080fd5b8a3567ffffffffffffffff808211156200354f57600080fd5b6200355d8e838f0162003308565b9b506200356d60208e016200315b565b9a5060408d0135995060608d013598506200358b60808e016200315b565b97506200359b60a08e0162003149565b9650620035ab60c08e016200315b565b9550620035bb60e08e0162003149565b94506101008d013593506101208d0135915080821115620035db57600080fd5b50620035ea8d828e01620034b9565b9150509295989b9194979a5092959850565b600080600080608085870312156200361357600080fd5b6200361e856200315b565b93506020850135620036308162003133565b92506040850135620036428162003133565b9396929550929360600135925050565b6000602082840312156200366557600080fd5b5035919050565b600080600080600080600060a0888a0312156200368857600080fd5b62003693886200315b565b96506020880135620036a58162003133565b9550604088013567ffffffffffffffff80821115620036c357600080fd5b620036d18b838c0162003170565b909750955060608a0135915080821115620036eb57600080fd5b50620036fa8a828b0162003170565b90945092505060808801356200371081620033f4565b8091505092959891949750929550565b6000806000606084860312156200373657600080fd5b62003741846200315b565b92506020840135620037538162003133565b9150604084013567ffffffffffffffff8111156200377057600080fd5b6200377e86828701620034b9565b9150509250925092565b801515811462001f9257600080fd5b600060208284031215620037aa57600080fd5b815162002f8e8162003788565b60005b83811015620037d4578181015183820152602001620037ba565b838111156200266d5750506000910152565b600082601f830112620037f857600080fd5b815162003809620034dc826200348e565b8181528460208386010111156200381f57600080fd5b62003832826020830160208701620037b7565b949350505050565b6000602082840312156200384d57600080fd5b815167ffffffffffffffff8111156200386557600080fd5b6200383284828501620037e6565b6000602082840312156200388657600080fd5b815162002f8e81620033f4565b60008151808452620038ad816020860160208601620037b7565b601f01601f19169290920160200192915050565b606081526000620038d6606083018662003893565b8281036020840152620038ea818662003893565b91505060ff83166040830152949350505050565b600061010060ff8b16835263ffffffff808b1660208501526001600160a01b03808b166040860152818a1660608601528089166080860152508660a08501528160c0850152620039518285018762003893565b925080851660e085015250509998505050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082620039ff577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820362003a385762003a3862003999565b5060010190565b6001600160a01b038416815263ffffffff8316602082015260606040820152600062003a6f606083018462003893565b95945050505050565b6000825162003a8c818460208701620037b7565b9190910192915050565b60008060006060848603121562003aac57600080fd5b835167ffffffffffffffff8082111562003ac557600080fd5b62003ad387838801620037e6565b9450602086015191508082111562003aea57600080fd5b5062003af986828701620037e6565b925050604084015162003b0c81620033f4565b809150509250925092565b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b60608152600062003b5860608301878962003b17565b828103602084015262003b6d81868862003b17565b91505060ff831660408301529695505050505050565b6000835162003b97818460208801620037b7565b83519083019062003bad818360208801620037b7565b01949350505050565b6000808585111562003bc757600080fd5b8386111562003bd557600080fd5b5050820193919092039150565b600080600080600080600060e0888a03121562003bfe57600080fd5b873562003c0b8162003133565b9650602088013562003c1d8162003133565b9550604088013594506060880135935060808801356200347181620033f4565b600080600080600080600080610100898b03121562003c5b57600080fd5b883562003c688162003133565b9750602089013562003c7a8162003133565b96506040890135955060608901359450608089013562003c9a8162003788565b935060a089013562003cac81620033f4565b979a969950949793969295929450505060c08201359160e0013590565b600181815b8085111562003d2857817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111562003d0c5762003d0c62003999565b8085161562003d1a57918102915b93841c939080029062003cce565b509250929050565b60008262003d415750600162000dab565b8162003d505750600062000dab565b816001811462003d69576002811462003d745762003d94565b600191505062000dab565b60ff84111562003d885762003d8862003999565b50506001821b62000dab565b5060208310610133831016604e8410600b841016171562003db9575081810a62000dab565b62003dc5838362003cc9565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111562003dfa5762003dfa62003999565b029392505050565b600062002f8e838362003d30565b60008282101562003e255762003e2562003999565b500390565b6000821982111562003e405762003e4062003999565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b60006020828403121562003e8757600080fd5b5051919050565b60208152600062002f8e60208301846200389356fe60c06040523480156200001157600080fd5b5060405162001a7838038062001a788339810160408190526200003491620002ad565b82826003620000448382620003c1565b506004620000538282620003c1565b5050600580546001600160a81b0319163360ff60a01b191617600160a01b60ff851602179055504660808190526200008b9062000098565b60a052506200048d915050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f620000c562000146565b805160209182012060408051808201825260018152603160f81b90840152805192830193909352918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060820152608081018390523060a082015260c001604051602081830303815290604052805190602001209050919050565b606060038054620001579062000332565b80601f0160208091040260200160405190810160405280929190818152602001828054620001859062000332565b8015620001d65780601f10620001aa57610100808354040283529160200191620001d6565b820191906000526020600020905b815481529060010190602001808311620001b857829003601f168201915b5050505050905090565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200020857600080fd5b81516001600160401b0380821115620002255762000225620001e0565b604051601f8301601f19908116603f01168101908282118183101715620002505762000250620001e0565b816040528381526020925086838588010111156200026d57600080fd5b600091505b8382101562000291578582018301518183018401529082019062000272565b83821115620002a35760008385830101525b9695505050505050565b600080600060608486031215620002c357600080fd5b83516001600160401b0380821115620002db57600080fd5b620002e987838801620001f6565b945060208601519150808211156200030057600080fd5b506200030f86828701620001f6565b925050604084015160ff811681146200032757600080fd5b809150509250925092565b600181811c908216806200034757607f821691505b6020821081036200036857634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620003bc57600081815260208120601f850160051c81016020861015620003975750805b601f850160051c820191505b81811015620003b857828155600101620003a3565b5050505b505050565b81516001600160401b03811115620003dd57620003dd620001e0565b620003f581620003ee845462000332565b846200036e565b602080601f8311600181146200042d5760008415620004145750858301515b600019600386901b1c1916600185901b178555620003b8565b600085815260208120601f198616915b828110156200045e578886015182559484019460019091019084016200043d565b50858210156200047d5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60805160a0516115be620004ba600039600061053001526000818161036f01526104fa01526115be6000f3fe608060405234801561001057600080fd5b50600436106101775760003560e01c806370a08231116100d8578063a457c2d71161008c578063d505accf11610066578063d505accf14610391578063dd62ed3e146103a6578063ffa1ad74146103ec57600080fd5b8063a457c2d714610344578063a9059cbb14610357578063cd0d00961461036a57600080fd5b806395d89b41116100bd57806395d89b41146102e45780639dc29fac146102ec578063a3c573eb146102ff57600080fd5b806370a082311461028e5780637ecebe00146102c457600080fd5b806330adf81f1161012f5780633644e515116101145780633644e51514610260578063395093511461026857806340c10f191461027b57600080fd5b806330adf81f14610209578063313ce5671461023057600080fd5b806318160ddd1161016057806318160ddd146101bd57806320606b70146101cf57806323b872dd146101f657600080fd5b806306fdde031461017c578063095ea7b31461019a575b600080fd5b610184610428565b60405161019191906112d5565b60405180910390f35b6101ad6101a8366004611371565b6104ba565b6040519015158152602001610191565b6002545b604051908152602001610191565b6101c17f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81565b6101ad61020436600461139b565b6104d2565b6101c17f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b60055474010000000000000000000000000000000000000000900460ff1660405160ff9091168152602001610191565b6101c16104f6565b6101ad610276366004611371565b610552565b6101ad610289366004611371565b61059e565b6101c161029c3660046113d7565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6101c16102d23660046113d7565b60066020526000908152604090205481565b610184610645565b6101ad6102fa366004611371565b610654565b60055461031f9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610191565b6101ad610352366004611371565b6106ed565b6101ad610365366004611371565b6107a4565b6101c17f000000000000000000000000000000000000000000000000000000000000000081565b6103a461039f3660046113f9565b6107b2565b005b6101c16103b436600461146c565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6101846040518060400160405280600181526020017f310000000000000000000000000000000000000000000000000000000000000081525081565b6060600380546104379061149f565b80601f01602080910402602001604051908101604052809291908181526020018280546104639061149f565b80156104b05780601f10610485576101008083540402835291602001916104b0565b820191906000526020600020905b81548152906001019060200180831161049357829003601f168201915b5050505050905090565b6000336104c8818585610ab4565b5060019392505050565b6000336104e0858285610c34565b6104eb858585610cf1565b506001949350505050565b60007f0000000000000000000000000000000000000000000000000000000000000000461461052d5761052846610f56565b905090565b507f000000000000000000000000000000000000000000000000000000000000000090565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906104c89082908690610599908790611521565b610ab4565b60055460009073ffffffffffffffffffffffffffffffffffffffff1633146106325760405162461bcd60e51b8152602060048201526024808201527f546f6b656e577261707065643a3a6f6e6c794272696467653a204e4f545f425260448201527f494447450000000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b61063c838361101e565b50600192915050565b6060600480546104379061149f565b60055460009073ffffffffffffffffffffffffffffffffffffffff1633146106e35760405162461bcd60e51b8152602060048201526024808201527f546f6b656e577261707065643a3a6f6e6c794272696467653a204e4f545f425260448201527f49444745000000000000000000000000000000000000000000000000000000006064820152608401610629565b61063c8383611124565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190838110156107975760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f0000000000000000000000000000000000000000000000000000006064820152608401610629565b6104eb8286868403610ab4565b6000336104c8818585610cf1565b834211156108275760405162461bcd60e51b8152602060048201526024808201527f546f6b656e577261707065643a3a7065726d69743a204578706972656420706560448201527f726d6974000000000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff8716600090815260066020526040812080547f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918a918a918a91908661088183611539565b9091555060408051602081019690965273ffffffffffffffffffffffffffffffffffffffff94851690860152929091166060840152608083015260a082015260c0810186905260e00160405160208183030381529060405280519060200120905060006108ec6104f6565b6040517f19010000000000000000000000000000000000000000000000000000000000006020820152602281019190915260428101839052606201604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282528051602091820120600080855291840180845281905260ff89169284019290925260608301879052608083018690529092509060019060a0016020604051602081039080840390855afa1580156109b0573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811615801590610a2b57508973ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b610a9d5760405162461bcd60e51b815260206004820152602760248201527f546f6b656e577261707065643a3a7065726d69743a20496e76616c696420736960448201527f676e6174757265000000000000000000000000000000000000000000000000006064820152608401610629565b610aa88a8a8a610ab4565b50505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff8316610b3c5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff8216610bc55760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610ceb5781811015610cde5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610629565b610ceb8484848403610ab4565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610d7a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff8216610e035760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610e9f5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260208190526040808220858503905591851681529081208054849290610ee3908490611521565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610f4991815260200190565b60405180910390a3610ceb565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f610f81610428565b8051602091820120604080518082018252600181527f310000000000000000000000000000000000000000000000000000000000000090840152805192830193909352918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060820152608081018390523060a082015260c001604051602081830303815290604052805190602001209050919050565b73ffffffffffffffffffffffffffffffffffffffff82166110815760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610629565b80600260008282546110939190611521565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600090815260208190526040812080548392906110cd908490611521565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b73ffffffffffffffffffffffffffffffffffffffff82166111ad5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260208190526040902054818110156112495760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f63650000000000000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff83166000908152602081905260408120838303905560028054849290611285908490611571565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610c27565b600060208083528351808285015260005b81811015611302578581018301518582016040015282016112e6565b81811115611314576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461136c57600080fd5b919050565b6000806040838503121561138457600080fd5b61138d83611348565b946020939093013593505050565b6000806000606084860312156113b057600080fd5b6113b984611348565b92506113c760208501611348565b9150604084013590509250925092565b6000602082840312156113e957600080fd5b6113f282611348565b9392505050565b600080600080600080600060e0888a03121561141457600080fd5b61141d88611348565b965061142b60208901611348565b95506040880135945060608801359350608088013560ff8116811461144f57600080fd5b9699959850939692959460a0840135945060c09093013592915050565b6000806040838503121561147f57600080fd5b61148883611348565b915061149660208401611348565b90509250929050565b600181811c908216806114b357607f821691505b6020821081036114ec577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008219821115611534576115346114f2565b500190565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361156a5761156a6114f2565b5060010190565b600082821015611583576115836114f2565b50039056fea2646970667358221220dc9c54325b6ec8c11c8bc6a1630cfb64202b6d54611cd1004e705ceca7826a4f64736f6c634300080f0033a2646970667358221220cd5d627eb44db0ac502a5df7e6b4905941374829b022d6f8f6fd4be1a279530c64736f6c634300080f0033", + "bytecode": "0x608060405234801561001057600080fd5b50615829806100206000396000f3fe608060405260043610620001db5760003560e01c806381b1c17411620000ff578063d96a15f71162000095578063e7a5b4ea116200006c578063e7a5b4ea1462000658578063ed6be5c9146200067d578063f2fde38b1462000694578063ff634ed714620006b957600080fd5b8063d96a15f714620005f5578063dbc16976146200060c578063e7375881146200062457600080fd5b8063a08e8a0811620000d6578063a08e8a08146200054f578063aaa13cc21462000579578063bab161bf146200059e578063d02103ca14620005d357600080fd5b806381b1c17414620004d35780638da5cb5b146200050d5780638f611519146200052d57600080fd5b80633ae05047116200017557806346385549116200014c57806346385549146200044c578063655595401462000471578063715018a614620004965780637b6323c114620004ae57600080fd5b80633ae05047146200032e5780633da8168214620003465780633e197043146200036b57600080fd5b80632072f6c511620001b65780632072f6c5146200025157806322e95f2c14620002695780632dfdf0b514620002a7578063318aee3d14620002bf57600080fd5b80630871e97114620001e05780630e1da6c314620001f957806315064c961462000224575b600080fd5b620001f7620001f136600462003146565b620006d0565b005b3480156200020657600080fd5b5062000211608d5481565b6040519081526020015b60405180910390f35b3480156200023157600080fd5b50602254620002409060ff1681565b60405190151581526020016200021b565b3480156200025e57600080fd5b50620001f762000c7a565b3480156200027657600080fd5b506200028e62000288366004620031d3565b62000d2e565b6040516001600160a01b0390911681526020016200021b565b348015620002b457600080fd5b506200021160215481565b348015620002cc57600080fd5b5062000309620002de3660046200320f565b608a6020526000908152604090205463ffffffff81169064010000000090046001600160a01b031682565b6040805163ffffffff90931683526001600160a01b039091166020830152016200021b565b3480156200033b57600080fd5b506200021162000db1565b3480156200035357600080fd5b50620002406200036536600462003317565b62000ea4565b3480156200037857600080fd5b50620002116200038a36600462003395565b6040517fff0000000000000000000000000000000000000000000000000000000000000060f889901b1660208201527fffffffff0000000000000000000000000000000000000000000000000000000060e088811b821660218401526bffffffffffffffffffffffff19606089811b821660258601529188901b909216603984015285901b16603d8201526051810183905260718101829052600090609101604051602081830303815290604052805190602001209050979650505050505050565b3480156200045957600080fd5b50620001f76200046b366004620034a6565b62000fa6565b3480156200047e57600080fd5b50620001f7620004903660046200358d565b6200122c565b348015620004a357600080fd5b50620001f762001412565b348015620004bb57600080fd5b50620001f7620004cd366004620034a6565b62001428565b348015620004e057600080fd5b506200028e620004f2366004620035e3565b6089602052600090815260409020546001600160a01b031681565b3480156200051a57600080fd5b506055546001600160a01b03166200028e565b3480156200053a57600080fd5b50608c546200028e906001600160a01b031681565b3480156200055c57600080fd5b5062000566600081565b60405160ff90911681526020016200021b565b3480156200058657600080fd5b506200028e62000598366004620035fd565b620019ea565b348015620005ab57600080fd5b50608754620005bd9063ffffffff1681565b60405163ffffffff90911681526020016200021b565b348015620005e057600080fd5b50608b546200028e906001600160a01b031681565b620001f762000606366004620036b1565b62001b56565b3480156200061957600080fd5b50620001f762001e0a565b3480156200063157600080fd5b506200024062000643366004620035e3565b60886020526000908152604090205460ff1681565b3480156200066557600080fd5b50620001f762000677366004620035e3565b62001ebc565b3480156200068a57600080fd5b50620005bd600081565b348015620006a157600080fd5b50620001f7620006b33660046200320f565b62001f01565b348015620006c657600080fd5b5062000566600181565b60225460ff1615620007755760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a4015b60405180910390fd5b60875463ffffffff90811690861603620007f85760405162461bcd60e51b815260206004820152602a60248201527f4272696467653a3a6272696467653a2044455354494e4154494f4e5f43414e5460448201527f5f42455f495453454c460000000000000000000000000000000000000000000060648201526084016200076c565b60008060606001600160a01b0389166200088d57853414620008835760405162461bcd60e51b815260206004820152602f60248201527f4272696467653a3a6272696467653a20414d4f554e545f444f45535f4e4f545f60448201527f4d415443485f4d53475f56414c5545000000000000000000000000000000000060648201526084016200076c565b6000915062000b17565b6001600160a01b03808a166000908152608a602090815260409182902082518084019093525463ffffffff811683526401000000009004909216918101829052901562000974576040517f9dc29fac000000000000000000000000000000000000000000000000000000008152336004820152602481018890526001600160a01b038b1690639dc29fac906044016020604051808303816000875af11580156200093b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000961919062003728565b5060208101518151909450925062000b15565b84156200098957620009898a88888862001f97565b620009a06001600160a01b038b1633308a620025bc565b899350608760009054906101000a900463ffffffff169250896001600160a01b03166306fdde036040518163ffffffff1660e01b8152600401600060405180830381865afa158015620009f7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000a219190810190620037c3565b8a6001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa15801562000a60573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000a8a9190810190620037c3565b8b6001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000ac9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000aef9190620037fc565b60405160200162000b03939291906200384a565b60405160208183030381529060405291505b505b7f501781209a1f8899323b96b4ef08b168df93e0a90c673d1e4cce39366cb62f9b600083858b8b8b8760215460405162000b5998979695949392919062003887565b60405180910390a18051602080830191909120604080516000818501527fffffffff0000000000000000000000000000000000000000000000000000000060e087811b821660218401526bffffffffffffffffffffffff1960608a811b82166025860152918f901b90921660398401528c901b16603d820152605181018a9052607180820193909352815180820390930183526091019052805191012062000c019062002675565b608b546001600160a01b03166333d6247d62000c1c62000db1565b6040518263ffffffff1660e01b815260040162000c3b91815260200190565b600060405180830381600087803b15801562000c5657600080fd5b505af115801562000c6b573d6000803e3d6000fd5b50505050505050505050505050565b608c546001600160a01b0316331462000d225760405162461bcd60e51b815260206004820152604b60248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7950726f6f664f66456660448201527f66696369656e63793a206f6e6c792050726f6f66206f6620456666696369656e60648201527f637920636f6e7472616374000000000000000000000000000000000000000000608482015260a4016200076c565b62000d2c620027d9565b565b6040805160e084901b7fffffffff0000000000000000000000000000000000000000000000000000000016602080830191909152606084901b6bffffffffffffffffffffffff1916602483015282516018818403018152603890920183528151918101919091206000908152608990915220546001600160a01b03165b92915050565b602154600090819081805b602081101562000e9b578260011660010362000e1c576001816020811062000de85762000de8620038f3565b0154604080516020810192909252810185905260600160405160208183030381529060405280519060200120935062000e49565b60408051602081018690529081018390526060016040516020818303038152906040528051906020012093505b62000e5660028462003951565b6040805160208101859052908101849052909350606001604051602081830303815290604052805190602001209150808062000e92906200398d565b91505062000dbc565b50919392505050565b60008467ffffffffffffffff8416825b602081101562000f97578160011660010362000f215786818151811062000edf5762000edf620038f3565b60200260200101518360405160200162000f03929190918252602082015260400190565b60405160208183030381529060405280519060200120925062000f73565b8287828151811062000f375762000f37620038f3565b602002602001015160405160200162000f5a929190918252602082015260400190565b6040516020818303038152906040528051906020012092505b62000f8060028362003951565b91508062000f8e816200398d565b91505062000eb4565b5050821490505b949350505050565b60225460ff1615620010475760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a4016200076c565b6200105d8a8a8a8a8a8a8a8a8a8a6001620028b2565b63ffffffff8916600090815260886020526040808220805460ff19166001179055516001600160a01b038516908490620010a09089908b908790602401620039c8565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1806b5f2000000000000000000000000000000000000000000000000000000001790525162001105919062003a01565b60006040518083038185875af1925050503d806000811462001144576040519150601f19603f3d011682016040523d82523d6000602084013e62001149565b606091505b5050905080620011c15760405162461bcd60e51b8152602060048201526024808201527f4272696467653a3a636c61696d4d6573736167653a204d4553534147455f464160448201527f494c45440000000000000000000000000000000000000000000000000000000060648201526084016200076c565b6040805163ffffffff8c81168252891660208201526001600160a01b0388811682840152861660608201526080810185905290517f25308c93ceeed162da955b3f7ce3e3f93606579e40fb92029faa9efe275459839181900360a00190a15050505050505050505050565b600054610100900460ff16158080156200124d5750600054600160ff909116105b80620012695750303b15801562001269575060005460ff166001145b620012dd5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016200076c565b6000805460ff1916600117905580156200131e57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6087805463ffffffff87167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000909116179055608b80546001600160a01b038087167fffffffffffffffffffffffff000000000000000000000000000000000000000092831617909255608c805492861692909116919091179055608d829055620013a762002c3f565b80156200140b57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b6200141c62002cc9565b62000d2c600062002d25565b60225460ff1615620014c95760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a4016200076c565b620014df8a8a8a8a8a8a8a8a8a8a6000620028b2565b63ffffffff89166000908152608860205260409020805460ff191660011790556001600160a01b038516620015fe57604080516000808252602082019092526001600160a01b0385169084906040516200153a919062003a01565b60006040518083038185875af1925050503d806000811462001579576040519150601f19603f3d011682016040523d82523d6000602084013e6200157e565b606091505b5050905080620015f75760405162461bcd60e51b815260206004820152602760248201527f4272696467653a3a636c61696d41737365743a204554485f5452414e5346455260448201527f5f4641494c45440000000000000000000000000000000000000000000000000060648201526084016200076c565b5062001980565b60875463ffffffff908116908716036200162e57620016286001600160a01b038616848462002d8f565b62001980565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e088901b1660208201526bffffffffffffffffffffffff19606087901b16602482015260009060380160408051601f198184030181529181528151602092830120600081815260899093529120549091506001600160a01b031680620018ec57600080600085806020019051810190620016ce919062003a1f565b925092509250600085848484604051620016e890620030af565b620016f6939291906200384a565b8190604051809103906000f590508015801562001717573d6000803e3d6000fd5b506040517f40c10f190000000000000000000000000000000000000000000000000000000081526001600160a01b038b81166004830152602482018b9052919250908216906340c10f19906044016020604051808303816000875af115801562001785573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620017ab919062003728565b50806089600088815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060405180604001604052808d63ffffffff1681526020018c6001600160a01b0316815250608a6000836001600160a01b03166001600160a01b0316815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a8154816001600160a01b0302191690836001600160a01b031602179055509050507fccd7715648d1f2bb13e158f96b5b6c3aeda555d4cb87112e274a6f28bc571d598c8c83604051620018da9392919063ffffffff9390931683526001600160a01b03918216602084015216604082015260600190565b60405180910390a1505050506200197d565b6040517f40c10f190000000000000000000000000000000000000000000000000000000081526001600160a01b038681166004830152602482018690528216906340c10f19906044016020604051808303816000875af115801562001955573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200197b919062003728565b505b50505b6040805163ffffffff8b81168252881660208201526001600160a01b0387811682840152851660608201526080810184905290517f25308c93ceeed162da955b3f7ce3e3f93606579e40fb92029faa9efe275459839181900360a00190a150505050505050505050565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e089901b1660208201526bffffffffffffffffffffffff19606088901b1660248201526000908190603801604051602081830303815290604052805190602001209050600060ff60f81b30836040518060200162001a6d90620030af565b601f1982820381018352601f90910116604081905262001a9a908d908d908d908d908d9060200162003acb565b60408051601f198184030181529082905262001aba929160200162003b0c565b6040516020818303038152906040528051906020012060405160200162001b3094939291907fff0000000000000000000000000000000000000000000000000000000000000094909416845260609290921b6bffffffffffffffffffffffff191660018401526015830152603582015260550190565b60408051808303601f1901815291905280516020909101209a9950505050505050505050565b60225460ff161562001bf75760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a4016200076c565b60875463ffffffff9081169084160362001c7a5760405162461bcd60e51b815260206004820152602a60248201527f4272696467653a3a6272696467653a2044455354494e4154494f4e5f43414e5460448201527f5f42455f495453454c460000000000000000000000000000000000000000000060648201526084016200076c565b6087546021546040517f501781209a1f8899323b96b4ef08b168df93e0a90c673d1e4cce39366cb62f9b9262001cc79260019263ffffffff9092169133918991899134918a919062003887565b60405180910390a16087548151602080840191909120604080517f0100000000000000000000000000000000000000000000000000000000000000818501527fffffffff0000000000000000000000000000000000000000000000000000000060e095861b811660218301526bffffffffffffffffffffffff1933606090811b82166025850152968a901b90911660398301529487901b909416603d850152346051850152607180850192909252805180850390920182526091909301909252815191012062001d979062002675565b608b546001600160a01b03166333d6247d62001db262000db1565b6040518263ffffffff1660e01b815260040162001dd191815260200190565b600060405180830381600087803b15801562001dec57600080fd5b505af115801562001e01573d6000803e3d6000fd5b50505050505050565b608c546001600160a01b0316331462001eb25760405162461bcd60e51b815260206004820152604b60248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7950726f6f664f66456660448201527f66696369656e63793a206f6e6c792050726f6f66206f6620456666696369656e60648201527f637920636f6e7472616374000000000000000000000000000000000000000000608482015260a4016200076c565b62000d2c62002dda565b62001ec662002cc9565b608d8190556040518181527f126d6a8888996898896a660f1c9a7a4ef612bd6df82281a13079dd27cc38758d9060200160405180910390a150565b62001f0b62002cc9565b6001600160a01b03811662001f895760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016200076c565b62001f948162002d25565b50565b600062001fda83838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525062002e8992505050565b90507f2afa5331000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000821601620022dc5760008080808080806200203d896004818d62003b3f565b8101906200204c919062003b6b565b9650965096509650965096509650336001600160a01b0316876001600160a01b031614620020e35760405162461bcd60e51b815260206004820152603060248201527f4272696467653a3a5f7065726d69743a205045524d49545f4f574e45525f4d5560448201527f53545f42455f5448455f53454e4445520000000000000000000000000000000060648201526084016200076c565b6001600160a01b0386163014620021635760405162461bcd60e51b815260206004820152602560248201527f4272696467653a3a5f7065726d69743a205350454e4445525f4d5553545f424560448201527f5f5448495300000000000000000000000000000000000000000000000000000060648201526084016200076c565b8a8514620021da5760405162461bcd60e51b815260206004820152602d60248201527f4272696467653a3a5f7065726d69743a205045524d49545f414d4f554e545f4460448201527f4f45535f4e4f545f4d415443480000000000000000000000000000000000000060648201526084016200076c565b604080516001600160a01b0389811660248301528881166044830152606482018890526084820187905260ff861660a483015260c4820185905260e48083018590528351808403909101815261010490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fd505accf000000000000000000000000000000000000000000000000000000001790529151918e169162002288919062003a01565b6000604051808303816000865af19150503d8060008114620022c7576040519150601f19603f3d011682016040523d82523d6000602084013e620022cc565b606091505b505050505050505050506200140b565b7fffffffff0000000000000000000000000000000000000000000000000000000081167f8fcbaf0c00000000000000000000000000000000000000000000000000000000146200236f5760405162461bcd60e51b815260206004820152601f60248201527f4272696467653a3a5f7065726d69743a204e4f545f56414c49445f43414c4c0060448201526064016200076c565b600080808080808080620023878a6004818e62003b3f565b81019062002396919062003bc6565b97509750975097509750975097509750336001600160a01b0316886001600160a01b0316146200242f5760405162461bcd60e51b815260206004820152603060248201527f4272696467653a3a5f7065726d69743a205045524d49545f4f574e45525f4d5560448201527f53545f42455f5448455f53454e4445520000000000000000000000000000000060648201526084016200076c565b6001600160a01b0387163014620024af5760405162461bcd60e51b815260206004820152602560248201527f4272696467653a3a5f7065726d69743a205350454e4445525f4d5553545f424560448201527f5f5448495300000000000000000000000000000000000000000000000000000060648201526084016200076c565b604080516001600160a01b038a811660248301528981166044830152606482018990526084820188905286151560a483015260ff861660c483015260e482018590526101048083018590528351808403909101815261012490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f8fcbaf0c000000000000000000000000000000000000000000000000000000001790529151918f169162002566919062003a01565b6000604051808303816000865af19150503d8060008114620025a5576040519150601f19603f3d011682016040523d82523d6000602084013e620025aa565b606091505b50505050505050505050505050505050565b6040516001600160a01b03808516602483015283166044820152606481018290526200266f9085907f23b872dd00000000000000000000000000000000000000000000000000000000906084015b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915262002e90565b50505050565b806001620026866020600262003d8b565b62002692919062003d99565b602154106200270a5760405162461bcd60e51b815260206004820152602a60248201527f4465706f736974436f6e74726163743a5f6465706f7369743a204d45524b4c4560448201527f5f545245455f46554c4c0000000000000000000000000000000000000000000060648201526084016200076c565b6001602160008282546200271f919062003db3565b909155505060215460005b6020811015620027c957816001166001036200275f578260018260208110620027575762002757620038f3565b015550505050565b60018160208110620027755762002775620038f3565b01546040805160208101929092528101849052606001604051602081830303815290604052805190602001209250600282620027b2919062003951565b915080620027c0816200398d565b9150506200272a565b50620027d462003dce565b505050565b60225460ff16156200287a5760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a4016200076c565b6022805460ff191660011790556040517f2261efe5aef6fedc1fd1550b25facc9181745623049c7901287030b9ad1a549790600090a1565b63ffffffff8a1660009081526088602052604090205460ff16156200293f5760405162461bcd60e51b8152602060048201526024808201527f4272696467653a3a5f7665726966794c6561663a20414c52454144595f434c4160448201527f494d45440000000000000000000000000000000000000000000000000000000060648201526084016200076c565b608b546040805160208082018d90528183018c9052825180830384018152606083019384905280519101207f257b36320000000000000000000000000000000000000000000000000000000090925260648101919091526000916001600160a01b03169063257b3632906084016020604051808303816000875af1158015620029cc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620029f2919062003dfd565b9050801580159062002a115750608d5462002a0e824262003d99565b10155b62002a855760405162461bcd60e51b815260206004820152602d60248201527f4272696467653a3a5f7665726966794c6561663a20474c4f42414c5f4558495460448201527f5f524f4f545f494e56414c49440000000000000000000000000000000000000060648201526084016200076c565b60875463ffffffff87811691161462002b075760405162461bcd60e51b815260206004820152603760248201527f4272696467653a3a5f7665726966794c6561663a2044455354494e4154494f4e60448201527f5f4e4554574f524b5f444f45535f4e4f545f4d4154434800000000000000000060648201526084016200076c565b60875460009063ffffffff1662002b2057508862002b23565b50895b8351602080860191909120604080517fff0000000000000000000000000000000000000000000000000000000000000060f888901b16818501527fffffffff0000000000000000000000000000000000000000000000000000000060e08e811b821660218401526bffffffffffffffffffffffff1960608f811b82166025860152918e901b90921660398401528b901b16603d82015260518101899052607180820193909352815180820390930183526091019052805191012062002bf1908e8e63ffffffff168462000ea4565b62000c6b5760405162461bcd60e51b815260206004820181905260248201527f4272696467653a3a5f7665726966794c6561663a20534d545f494e56414c494460448201526064016200076c565b600054610100900460ff1662002cbe5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016200076c565b62000d2c3362002d25565b6055546001600160a01b0316331462000d2c5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016200076c565b605580546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6040516001600160a01b038316602482015260448101829052620027d49084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064016200260a565b60225460ff1662002e545760405162461bcd60e51b815260206004820152603b60248201527f456d657267656e63794d616e616765723a3a6966456d657267656e637953746160448201527f74653a206f6e6c7920696620656d657267656e6379207374617465000000000060648201526084016200076c565b6022805460ff191690556040517f1e5e34eea33501aecf2ebec9fe0e884a40804275ea7fe10b2ba084c8374308b390600090a1565b6020015190565b600062002ee7826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031662002f7c9092919063ffffffff16565b805190915015620027d4578080602001905181019062002f08919062003728565b620027d45760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016200076c565b606062000f9e848460008585600080866001600160a01b0316858760405162002fa6919062003a01565b60006040518083038185875af1925050503d806000811462002fe5576040519150601f19603f3d011682016040523d82523d6000602084013e62002fea565b606091505b509150915062002ffd8783838762003008565b979650505050505050565b606083156200307c57825160000362003074576001600160a01b0385163b620030745760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016200076c565b508162000f9e565b62000f9e8383815115620030935781518083602001fd5b8060405162461bcd60e51b81526004016200076c919062003e17565b6119c78062003e2d83390190565b6001600160a01b038116811462001f9457600080fd5b8035620030e081620030bd565b919050565b803563ffffffff81168114620030e057600080fd5b60008083601f8401126200310d57600080fd5b50813567ffffffffffffffff8111156200312657600080fd5b6020830191508360208285010111156200313f57600080fd5b9250929050565b60008060008060008060a087890312156200316057600080fd5b86356200316d81620030bd565b95506200317d60208801620030e5565b945060408701356200318f81620030bd565b935060608701359250608087013567ffffffffffffffff811115620031b357600080fd5b620031c189828a01620030fa565b979a9699509497509295939492505050565b60008060408385031215620031e757600080fd5b620031f283620030e5565b915060208301356200320481620030bd565b809150509250929050565b6000602082840312156200322257600080fd5b81356200322f81620030bd565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171562003291576200329162003236565b604052919050565b600082601f830112620032ab57600080fd5b8135602067ffffffffffffffff821115620032ca57620032ca62003236565b8160051b620032db82820162003265565b9283528481018201928281019087851115620032f657600080fd5b83870192505b8483101562002ffd57823582529183019190830190620032fc565b600080600080608085870312156200332e57600080fd5b84359350602085013567ffffffffffffffff808211156200334e57600080fd5b6200335c8883890162003299565b94506040870135915080821682146200337457600080fd5b509396929550929360600135925050565b60ff8116811462001f9457600080fd5b600080600080600080600060e0888a031215620033b157600080fd5b8735620033be8162003385565b9650620033ce60208901620030e5565b95506040880135620033e081620030bd565b9450620033f060608901620030e5565b935060808801356200340281620030bd565b9699959850939692959460a0840135945060c09093013592915050565b600067ffffffffffffffff8211156200343c576200343c62003236565b50601f01601f191660200190565b600082601f8301126200345c57600080fd5b8135620034736200346d826200341f565b62003265565b8181528460208386010111156200348957600080fd5b816020850160208301376000918101602001919091529392505050565b6000806000806000806000806000806101408b8d031215620034c757600080fd5b8a3567ffffffffffffffff80821115620034e057600080fd5b620034ee8e838f0162003299565b9b50620034fe60208e01620030e5565b9a5060408d0135995060608d013598506200351c60808e01620030e5565b97506200352c60a08e01620030d3565b96506200353c60c08e01620030e5565b95506200354c60e08e01620030d3565b94506101008d013593506101208d01359150808211156200356c57600080fd5b506200357b8d828e016200344a565b9150509295989b9194979a5092959850565b60008060008060808587031215620035a457600080fd5b620035af85620030e5565b93506020850135620035c181620030bd565b92506040850135620035d381620030bd565b9396929550929360600135925050565b600060208284031215620035f657600080fd5b5035919050565b600080600080600080600060a0888a0312156200361957600080fd5b6200362488620030e5565b965060208801356200363681620030bd565b9550604088013567ffffffffffffffff808211156200365457600080fd5b620036628b838c01620030fa565b909750955060608a01359150808211156200367c57600080fd5b506200368b8a828b01620030fa565b9094509250506080880135620036a18162003385565b8091505092959891949750929550565b600080600060608486031215620036c757600080fd5b620036d284620030e5565b92506020840135620036e481620030bd565b9150604084013567ffffffffffffffff8111156200370157600080fd5b6200370f868287016200344a565b9150509250925092565b801515811462001f9457600080fd5b6000602082840312156200373b57600080fd5b81516200322f8162003719565b60005b83811015620037655781810151838201526020016200374b565b838111156200266f5750506000910152565b600082601f8301126200378957600080fd5b81516200379a6200346d826200341f565b818152846020838601011115620037b057600080fd5b62000f9e82602083016020870162003748565b600060208284031215620037d657600080fd5b815167ffffffffffffffff811115620037ee57600080fd5b62000f9e8482850162003777565b6000602082840312156200380f57600080fd5b81516200322f8162003385565b600081518084526200383681602086016020860162003748565b601f01601f19169290920160200192915050565b6060815260006200385f60608301866200381c565b82810360208401526200387381866200381c565b91505060ff83166040830152949350505050565b600061010060ff8b16835263ffffffff808b1660208501526001600160a01b03808b166040860152818a1660608601528089166080860152508660a08501528160c0850152620038da828501876200381c565b925080851660e085015250509998505050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008262003988577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203620039c157620039c162003922565b5060010190565b6001600160a01b038416815263ffffffff83166020820152606060408201526000620039f860608301846200381c565b95945050505050565b6000825162003a1581846020870162003748565b9190910192915050565b60008060006060848603121562003a3557600080fd5b835167ffffffffffffffff8082111562003a4e57600080fd5b62003a5c8783880162003777565b9450602086015191508082111562003a7357600080fd5b5062003a828682870162003777565b925050604084015162003a958162003385565b809150509250925092565b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b60608152600062003ae160608301878962003aa0565b828103602084015262003af681868862003aa0565b91505060ff831660408301529695505050505050565b6000835162003b2081846020880162003748565b83519083019062003b3681836020880162003748565b01949350505050565b6000808585111562003b5057600080fd5b8386111562003b5e57600080fd5b5050820193919092039150565b600080600080600080600060e0888a03121562003b8757600080fd5b873562003b9481620030bd565b9650602088013562003ba681620030bd565b955060408801359450606088013593506080880135620034028162003385565b600080600080600080600080610100898b03121562003be457600080fd5b883562003bf181620030bd565b9750602089013562003c0381620030bd565b96506040890135955060608901359450608089013562003c238162003719565b935060a089013562003c358162003385565b979a969950949793969295929450505060c08201359160e0013590565b600181815b8085111562003cb157817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111562003c955762003c9562003922565b8085161562003ca357918102915b93841c939080029062003c57565b509250929050565b60008262003cca5750600162000dab565b8162003cd95750600062000dab565b816001811462003cf2576002811462003cfd5762003d1d565b600191505062000dab565b60ff84111562003d115762003d1162003922565b50506001821b62000dab565b5060208310610133831016604e8410600b841016171562003d42575081810a62000dab565b62003d4e838362003c52565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111562003d835762003d8362003922565b029392505050565b60006200322f838362003cb9565b60008282101562003dae5762003dae62003922565b500390565b6000821982111562003dc95762003dc962003922565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b60006020828403121562003e1057600080fd5b5051919050565b6020815260006200322f60208301846200381c56fe60c06040523480156200001157600080fd5b50604051620019c7380380620019c78339810160408190526200003491620002ad565b82826003620000448382620003c1565b506004620000538282620003c1565b5050600580546001600160a81b0319163360ff60a01b191617600160a01b60ff851602179055504660808190526200008b9062000098565b60a052506200048d915050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f620000c562000146565b805160209182012060408051808201825260018152603160f81b90840152805192830193909352918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060820152608081018390523060a082015260c001604051602081830303815290604052805190602001209050919050565b606060038054620001579062000332565b80601f0160208091040260200160405190810160405280929190818152602001828054620001859062000332565b8015620001d65780601f10620001aa57610100808354040283529160200191620001d6565b820191906000526020600020905b815481529060010190602001808311620001b857829003601f168201915b5050505050905090565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200020857600080fd5b81516001600160401b0380821115620002255762000225620001e0565b604051601f8301601f19908116603f01168101908282118183101715620002505762000250620001e0565b816040528381526020925086838588010111156200026d57600080fd5b600091505b8382101562000291578582018301518183018401529082019062000272565b83821115620002a35760008385830101525b9695505050505050565b600080600060608486031215620002c357600080fd5b83516001600160401b0380821115620002db57600080fd5b620002e987838801620001f6565b945060208601519150808211156200030057600080fd5b506200030f86828701620001f6565b925050604084015160ff811681146200032757600080fd5b809150509250925092565b600181811c908216806200034757607f821691505b6020821081036200036857634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620003bc57600081815260208120601f850160051c81016020861015620003975750805b601f850160051c820191505b81811015620003b857828155600101620003a3565b5050505b505050565b81516001600160401b03811115620003dd57620003dd620001e0565b620003f581620003ee845462000332565b846200036e565b602080601f8311600181146200042d5760008415620004145750858301515b600019600386901b1c1916600185901b178555620003b8565b600085815260208120601f198616915b828110156200045e578886015182559484019460019091019084016200043d565b50858210156200047d5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60805160a05161150d620004ba600039600061053001526000818161036f01526104fa015261150d6000f3fe608060405234801561001057600080fd5b50600436106101775760003560e01c806370a08231116100d8578063a457c2d71161008c578063d505accf11610066578063d505accf14610391578063dd62ed3e146103a6578063ffa1ad74146103ec57600080fd5b8063a457c2d714610344578063a9059cbb14610357578063cd0d00961461036a57600080fd5b806395d89b41116100bd57806395d89b41146102e45780639dc29fac146102ec578063a3c573eb146102ff57600080fd5b806370a082311461028e5780637ecebe00146102c457600080fd5b806330adf81f1161012f5780633644e515116101145780633644e51514610260578063395093511461026857806340c10f191461027b57600080fd5b806330adf81f14610209578063313ce5671461023057600080fd5b806318160ddd1161016057806318160ddd146101bd57806320606b70146101cf57806323b872dd146101f657600080fd5b806306fdde031461017c578063095ea7b31461019a575b600080fd5b610184610428565b604051610191919061123b565b60405180910390f35b6101ad6101a83660046112d7565b6104ba565b6040519015158152602001610191565b6002545b604051908152602001610191565b6101c17f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81565b6101ad610204366004611301565b6104d2565b6101c17f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b60055474010000000000000000000000000000000000000000900460ff1660405160ff9091168152602001610191565b6101c16104f6565b6101ad6102763660046112d7565b610552565b6101ad6102893660046112d7565b61059e565b6101c161029c36600461133d565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6101c16102d236600461133d565b60066020526000908152604090205481565b610184610645565b6101ad6102fa3660046112d7565b610654565b60055461031f9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610191565b6101ad6103523660046112d7565b6106ed565b6101ad6103653660046112d7565b6107a4565b6101c17f000000000000000000000000000000000000000000000000000000000000000081565b6103a461039f36600461135f565b6107b2565b005b6101c16103b43660046113d2565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6101846040518060400160405280600181526020017f310000000000000000000000000000000000000000000000000000000000000081525081565b60606003805461043790611405565b80601f016020809104026020016040519081016040528092919081815260200182805461046390611405565b80156104b05780601f10610485576101008083540402835291602001916104b0565b820191906000526020600020905b81548152906001019060200180831161049357829003601f168201915b5050505050905090565b6000336104c8818585610ab4565b5060019392505050565b6000336104e0858285610c34565b6104eb858585610cf1565b506001949350505050565b60007f0000000000000000000000000000000000000000000000000000000000000000461461052d5761052846610f12565b905090565b507f000000000000000000000000000000000000000000000000000000000000000090565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906104c89082908690610599908790611487565b610ab4565b60055460009073ffffffffffffffffffffffffffffffffffffffff1633146106325760405162461bcd60e51b8152602060048201526024808201527f546f6b656e577261707065643a3a6f6e6c794272696467653a204e4f545f425260448201527f494447450000000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b61063c8383610fda565b50600192915050565b60606004805461043790611405565b60055460009073ffffffffffffffffffffffffffffffffffffffff1633146106e35760405162461bcd60e51b8152602060048201526024808201527f546f6b656e577261707065643a3a6f6e6c794272696467653a204e4f545f425260448201527f49444745000000000000000000000000000000000000000000000000000000006064820152608401610629565b61063c83836110b3565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190838110156107975760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f0000000000000000000000000000000000000000000000000000006064820152608401610629565b6104eb8286868403610ab4565b6000336104c8818585610cf1565b834211156108275760405162461bcd60e51b8152602060048201526024808201527f546f6b656e577261707065643a3a7065726d69743a204578706972656420706560448201527f726d6974000000000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff8716600090815260066020526040812080547f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918a918a918a9190866108818361149f565b9091555060408051602081019690965273ffffffffffffffffffffffffffffffffffffffff94851690860152929091166060840152608083015260a082015260c0810186905260e00160405160208183030381529060405280519060200120905060006108ec6104f6565b6040517f19010000000000000000000000000000000000000000000000000000000000006020820152602281019190915260428101839052606201604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282528051602091820120600080855291840180845281905260ff89169284019290925260608301879052608083018690529092509060019060a0016020604051602081039080840390855afa1580156109b0573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811615801590610a2b57508973ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b610a9d5760405162461bcd60e51b815260206004820152602760248201527f546f6b656e577261707065643a3a7065726d69743a20496e76616c696420736960448201527f676e6174757265000000000000000000000000000000000000000000000000006064820152608401610629565b610aa88a8a8a610ab4565b50505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff8316610b3c5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff8216610bc55760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610ceb5781811015610cde5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610629565b610ceb8484848403610ab4565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610d7a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff8216610e035760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610e9f5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610ceb565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f610f3d610428565b8051602091820120604080518082018252600181527f310000000000000000000000000000000000000000000000000000000000000090840152805192830193909352918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060820152608081018390523060a082015260c001604051602081830303815290604052805190602001209050919050565b73ffffffffffffffffffffffffffffffffffffffff821661103d5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610629565b806002600082825461104f9190611487565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b73ffffffffffffffffffffffffffffffffffffffff821661113c5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260208190526040902054818110156111d85760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f63650000000000000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff83166000818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101610c27565b600060208083528351808285015260005b818110156112685785810183015185820160400152820161124c565b8181111561127a576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146112d257600080fd5b919050565b600080604083850312156112ea57600080fd5b6112f3836112ae565b946020939093013593505050565b60008060006060848603121561131657600080fd5b61131f846112ae565b925061132d602085016112ae565b9150604084013590509250925092565b60006020828403121561134f57600080fd5b611358826112ae565b9392505050565b600080600080600080600060e0888a03121561137a57600080fd5b611383886112ae565b9650611391602089016112ae565b95506040880135945060608801359350608088013560ff811681146113b557600080fd5b9699959850939692959460a0840135945060c09093013592915050565b600080604083850312156113e557600080fd5b6113ee836112ae565b91506113fc602084016112ae565b90509250929050565b600181811c9082168061141957607f821691505b602082108103611452577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000821982111561149a5761149a611458565b500190565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036114d0576114d0611458565b506001019056fea264697066735822122094134962e5fa2f6357086a2590b7f3a754d340b16e5312664d82a308bc23a0df64736f6c634300080f0033a264697066735822122038131c24024bbc952c3d2f624475606fbf73b929bdaad1a58995cc43510513a064736f6c634300080f0033", + "deployedBytecode": "0x608060405260043610620001db5760003560e01c806381b1c17411620000ff578063d96a15f71162000095578063e7a5b4ea116200006c578063e7a5b4ea1462000658578063ed6be5c9146200067d578063f2fde38b1462000694578063ff634ed714620006b957600080fd5b8063d96a15f714620005f5578063dbc16976146200060c578063e7375881146200062457600080fd5b8063a08e8a0811620000d6578063a08e8a08146200054f578063aaa13cc21462000579578063bab161bf146200059e578063d02103ca14620005d357600080fd5b806381b1c17414620004d35780638da5cb5b146200050d5780638f611519146200052d57600080fd5b80633ae05047116200017557806346385549116200014c57806346385549146200044c578063655595401462000471578063715018a614620004965780637b6323c114620004ae57600080fd5b80633ae05047146200032e5780633da8168214620003465780633e197043146200036b57600080fd5b80632072f6c511620001b65780632072f6c5146200025157806322e95f2c14620002695780632dfdf0b514620002a7578063318aee3d14620002bf57600080fd5b80630871e97114620001e05780630e1da6c314620001f957806315064c961462000224575b600080fd5b620001f7620001f136600462003146565b620006d0565b005b3480156200020657600080fd5b5062000211608d5481565b6040519081526020015b60405180910390f35b3480156200023157600080fd5b50602254620002409060ff1681565b60405190151581526020016200021b565b3480156200025e57600080fd5b50620001f762000c7a565b3480156200027657600080fd5b506200028e62000288366004620031d3565b62000d2e565b6040516001600160a01b0390911681526020016200021b565b348015620002b457600080fd5b506200021160215481565b348015620002cc57600080fd5b5062000309620002de3660046200320f565b608a6020526000908152604090205463ffffffff81169064010000000090046001600160a01b031682565b6040805163ffffffff90931683526001600160a01b039091166020830152016200021b565b3480156200033b57600080fd5b506200021162000db1565b3480156200035357600080fd5b50620002406200036536600462003317565b62000ea4565b3480156200037857600080fd5b50620002116200038a36600462003395565b6040517fff0000000000000000000000000000000000000000000000000000000000000060f889901b1660208201527fffffffff0000000000000000000000000000000000000000000000000000000060e088811b821660218401526bffffffffffffffffffffffff19606089811b821660258601529188901b909216603984015285901b16603d8201526051810183905260718101829052600090609101604051602081830303815290604052805190602001209050979650505050505050565b3480156200045957600080fd5b50620001f76200046b366004620034a6565b62000fa6565b3480156200047e57600080fd5b50620001f7620004903660046200358d565b6200122c565b348015620004a357600080fd5b50620001f762001412565b348015620004bb57600080fd5b50620001f7620004cd366004620034a6565b62001428565b348015620004e057600080fd5b506200028e620004f2366004620035e3565b6089602052600090815260409020546001600160a01b031681565b3480156200051a57600080fd5b506055546001600160a01b03166200028e565b3480156200053a57600080fd5b50608c546200028e906001600160a01b031681565b3480156200055c57600080fd5b5062000566600081565b60405160ff90911681526020016200021b565b3480156200058657600080fd5b506200028e62000598366004620035fd565b620019ea565b348015620005ab57600080fd5b50608754620005bd9063ffffffff1681565b60405163ffffffff90911681526020016200021b565b348015620005e057600080fd5b50608b546200028e906001600160a01b031681565b620001f762000606366004620036b1565b62001b56565b3480156200061957600080fd5b50620001f762001e0a565b3480156200063157600080fd5b506200024062000643366004620035e3565b60886020526000908152604090205460ff1681565b3480156200066557600080fd5b50620001f762000677366004620035e3565b62001ebc565b3480156200068a57600080fd5b50620005bd600081565b348015620006a157600080fd5b50620001f7620006b33660046200320f565b62001f01565b348015620006c657600080fd5b5062000566600181565b60225460ff1615620007755760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a4015b60405180910390fd5b60875463ffffffff90811690861603620007f85760405162461bcd60e51b815260206004820152602a60248201527f4272696467653a3a6272696467653a2044455354494e4154494f4e5f43414e5460448201527f5f42455f495453454c460000000000000000000000000000000000000000000060648201526084016200076c565b60008060606001600160a01b0389166200088d57853414620008835760405162461bcd60e51b815260206004820152602f60248201527f4272696467653a3a6272696467653a20414d4f554e545f444f45535f4e4f545f60448201527f4d415443485f4d53475f56414c5545000000000000000000000000000000000060648201526084016200076c565b6000915062000b17565b6001600160a01b03808a166000908152608a602090815260409182902082518084019093525463ffffffff811683526401000000009004909216918101829052901562000974576040517f9dc29fac000000000000000000000000000000000000000000000000000000008152336004820152602481018890526001600160a01b038b1690639dc29fac906044016020604051808303816000875af11580156200093b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000961919062003728565b5060208101518151909450925062000b15565b84156200098957620009898a88888862001f97565b620009a06001600160a01b038b1633308a620025bc565b899350608760009054906101000a900463ffffffff169250896001600160a01b03166306fdde036040518163ffffffff1660e01b8152600401600060405180830381865afa158015620009f7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000a219190810190620037c3565b8a6001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa15801562000a60573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000a8a9190810190620037c3565b8b6001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000ac9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000aef9190620037fc565b60405160200162000b03939291906200384a565b60405160208183030381529060405291505b505b7f501781209a1f8899323b96b4ef08b168df93e0a90c673d1e4cce39366cb62f9b600083858b8b8b8760215460405162000b5998979695949392919062003887565b60405180910390a18051602080830191909120604080516000818501527fffffffff0000000000000000000000000000000000000000000000000000000060e087811b821660218401526bffffffffffffffffffffffff1960608a811b82166025860152918f901b90921660398401528c901b16603d820152605181018a9052607180820193909352815180820390930183526091019052805191012062000c019062002675565b608b546001600160a01b03166333d6247d62000c1c62000db1565b6040518263ffffffff1660e01b815260040162000c3b91815260200190565b600060405180830381600087803b15801562000c5657600080fd5b505af115801562000c6b573d6000803e3d6000fd5b50505050505050505050505050565b608c546001600160a01b0316331462000d225760405162461bcd60e51b815260206004820152604b60248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7950726f6f664f66456660448201527f66696369656e63793a206f6e6c792050726f6f66206f6620456666696369656e60648201527f637920636f6e7472616374000000000000000000000000000000000000000000608482015260a4016200076c565b62000d2c620027d9565b565b6040805160e084901b7fffffffff0000000000000000000000000000000000000000000000000000000016602080830191909152606084901b6bffffffffffffffffffffffff1916602483015282516018818403018152603890920183528151918101919091206000908152608990915220546001600160a01b03165b92915050565b602154600090819081805b602081101562000e9b578260011660010362000e1c576001816020811062000de85762000de8620038f3565b0154604080516020810192909252810185905260600160405160208183030381529060405280519060200120935062000e49565b60408051602081018690529081018390526060016040516020818303038152906040528051906020012093505b62000e5660028462003951565b6040805160208101859052908101849052909350606001604051602081830303815290604052805190602001209150808062000e92906200398d565b91505062000dbc565b50919392505050565b60008467ffffffffffffffff8416825b602081101562000f97578160011660010362000f215786818151811062000edf5762000edf620038f3565b60200260200101518360405160200162000f03929190918252602082015260400190565b60405160208183030381529060405280519060200120925062000f73565b8287828151811062000f375762000f37620038f3565b602002602001015160405160200162000f5a929190918252602082015260400190565b6040516020818303038152906040528051906020012092505b62000f8060028362003951565b91508062000f8e816200398d565b91505062000eb4565b5050821490505b949350505050565b60225460ff1615620010475760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a4016200076c565b6200105d8a8a8a8a8a8a8a8a8a8a6001620028b2565b63ffffffff8916600090815260886020526040808220805460ff19166001179055516001600160a01b038516908490620010a09089908b908790602401620039c8565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1806b5f2000000000000000000000000000000000000000000000000000000001790525162001105919062003a01565b60006040518083038185875af1925050503d806000811462001144576040519150601f19603f3d011682016040523d82523d6000602084013e62001149565b606091505b5050905080620011c15760405162461bcd60e51b8152602060048201526024808201527f4272696467653a3a636c61696d4d6573736167653a204d4553534147455f464160448201527f494c45440000000000000000000000000000000000000000000000000000000060648201526084016200076c565b6040805163ffffffff8c81168252891660208201526001600160a01b0388811682840152861660608201526080810185905290517f25308c93ceeed162da955b3f7ce3e3f93606579e40fb92029faa9efe275459839181900360a00190a15050505050505050505050565b600054610100900460ff16158080156200124d5750600054600160ff909116105b80620012695750303b15801562001269575060005460ff166001145b620012dd5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016200076c565b6000805460ff1916600117905580156200131e57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6087805463ffffffff87167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000909116179055608b80546001600160a01b038087167fffffffffffffffffffffffff000000000000000000000000000000000000000092831617909255608c805492861692909116919091179055608d829055620013a762002c3f565b80156200140b57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b6200141c62002cc9565b62000d2c600062002d25565b60225460ff1615620014c95760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a4016200076c565b620014df8a8a8a8a8a8a8a8a8a8a6000620028b2565b63ffffffff89166000908152608860205260409020805460ff191660011790556001600160a01b038516620015fe57604080516000808252602082019092526001600160a01b0385169084906040516200153a919062003a01565b60006040518083038185875af1925050503d806000811462001579576040519150601f19603f3d011682016040523d82523d6000602084013e6200157e565b606091505b5050905080620015f75760405162461bcd60e51b815260206004820152602760248201527f4272696467653a3a636c61696d41737365743a204554485f5452414e5346455260448201527f5f4641494c45440000000000000000000000000000000000000000000000000060648201526084016200076c565b5062001980565b60875463ffffffff908116908716036200162e57620016286001600160a01b038616848462002d8f565b62001980565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e088901b1660208201526bffffffffffffffffffffffff19606087901b16602482015260009060380160408051601f198184030181529181528151602092830120600081815260899093529120549091506001600160a01b031680620018ec57600080600085806020019051810190620016ce919062003a1f565b925092509250600085848484604051620016e890620030af565b620016f6939291906200384a565b8190604051809103906000f590508015801562001717573d6000803e3d6000fd5b506040517f40c10f190000000000000000000000000000000000000000000000000000000081526001600160a01b038b81166004830152602482018b9052919250908216906340c10f19906044016020604051808303816000875af115801562001785573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620017ab919062003728565b50806089600088815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060405180604001604052808d63ffffffff1681526020018c6001600160a01b0316815250608a6000836001600160a01b03166001600160a01b0316815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a8154816001600160a01b0302191690836001600160a01b031602179055509050507fccd7715648d1f2bb13e158f96b5b6c3aeda555d4cb87112e274a6f28bc571d598c8c83604051620018da9392919063ffffffff9390931683526001600160a01b03918216602084015216604082015260600190565b60405180910390a1505050506200197d565b6040517f40c10f190000000000000000000000000000000000000000000000000000000081526001600160a01b038681166004830152602482018690528216906340c10f19906044016020604051808303816000875af115801562001955573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200197b919062003728565b505b50505b6040805163ffffffff8b81168252881660208201526001600160a01b0387811682840152851660608201526080810184905290517f25308c93ceeed162da955b3f7ce3e3f93606579e40fb92029faa9efe275459839181900360a00190a150505050505050505050565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e089901b1660208201526bffffffffffffffffffffffff19606088901b1660248201526000908190603801604051602081830303815290604052805190602001209050600060ff60f81b30836040518060200162001a6d90620030af565b601f1982820381018352601f90910116604081905262001a9a908d908d908d908d908d9060200162003acb565b60408051601f198184030181529082905262001aba929160200162003b0c565b6040516020818303038152906040528051906020012060405160200162001b3094939291907fff0000000000000000000000000000000000000000000000000000000000000094909416845260609290921b6bffffffffffffffffffffffff191660018401526015830152603582015260550190565b60408051808303601f1901815291905280516020909101209a9950505050505050505050565b60225460ff161562001bf75760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a4016200076c565b60875463ffffffff9081169084160362001c7a5760405162461bcd60e51b815260206004820152602a60248201527f4272696467653a3a6272696467653a2044455354494e4154494f4e5f43414e5460448201527f5f42455f495453454c460000000000000000000000000000000000000000000060648201526084016200076c565b6087546021546040517f501781209a1f8899323b96b4ef08b168df93e0a90c673d1e4cce39366cb62f9b9262001cc79260019263ffffffff9092169133918991899134918a919062003887565b60405180910390a16087548151602080840191909120604080517f0100000000000000000000000000000000000000000000000000000000000000818501527fffffffff0000000000000000000000000000000000000000000000000000000060e095861b811660218301526bffffffffffffffffffffffff1933606090811b82166025850152968a901b90911660398301529487901b909416603d850152346051850152607180850192909252805180850390920182526091909301909252815191012062001d979062002675565b608b546001600160a01b03166333d6247d62001db262000db1565b6040518263ffffffff1660e01b815260040162001dd191815260200190565b600060405180830381600087803b15801562001dec57600080fd5b505af115801562001e01573d6000803e3d6000fd5b50505050505050565b608c546001600160a01b0316331462001eb25760405162461bcd60e51b815260206004820152604b60248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7950726f6f664f66456660448201527f66696369656e63793a206f6e6c792050726f6f66206f6620456666696369656e60648201527f637920636f6e7472616374000000000000000000000000000000000000000000608482015260a4016200076c565b62000d2c62002dda565b62001ec662002cc9565b608d8190556040518181527f126d6a8888996898896a660f1c9a7a4ef612bd6df82281a13079dd27cc38758d9060200160405180910390a150565b62001f0b62002cc9565b6001600160a01b03811662001f895760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016200076c565b62001f948162002d25565b50565b600062001fda83838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525062002e8992505050565b90507f2afa5331000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000821601620022dc5760008080808080806200203d896004818d62003b3f565b8101906200204c919062003b6b565b9650965096509650965096509650336001600160a01b0316876001600160a01b031614620020e35760405162461bcd60e51b815260206004820152603060248201527f4272696467653a3a5f7065726d69743a205045524d49545f4f574e45525f4d5560448201527f53545f42455f5448455f53454e4445520000000000000000000000000000000060648201526084016200076c565b6001600160a01b0386163014620021635760405162461bcd60e51b815260206004820152602560248201527f4272696467653a3a5f7065726d69743a205350454e4445525f4d5553545f424560448201527f5f5448495300000000000000000000000000000000000000000000000000000060648201526084016200076c565b8a8514620021da5760405162461bcd60e51b815260206004820152602d60248201527f4272696467653a3a5f7065726d69743a205045524d49545f414d4f554e545f4460448201527f4f45535f4e4f545f4d415443480000000000000000000000000000000000000060648201526084016200076c565b604080516001600160a01b0389811660248301528881166044830152606482018890526084820187905260ff861660a483015260c4820185905260e48083018590528351808403909101815261010490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fd505accf000000000000000000000000000000000000000000000000000000001790529151918e169162002288919062003a01565b6000604051808303816000865af19150503d8060008114620022c7576040519150601f19603f3d011682016040523d82523d6000602084013e620022cc565b606091505b505050505050505050506200140b565b7fffffffff0000000000000000000000000000000000000000000000000000000081167f8fcbaf0c00000000000000000000000000000000000000000000000000000000146200236f5760405162461bcd60e51b815260206004820152601f60248201527f4272696467653a3a5f7065726d69743a204e4f545f56414c49445f43414c4c0060448201526064016200076c565b600080808080808080620023878a6004818e62003b3f565b81019062002396919062003bc6565b97509750975097509750975097509750336001600160a01b0316886001600160a01b0316146200242f5760405162461bcd60e51b815260206004820152603060248201527f4272696467653a3a5f7065726d69743a205045524d49545f4f574e45525f4d5560448201527f53545f42455f5448455f53454e4445520000000000000000000000000000000060648201526084016200076c565b6001600160a01b0387163014620024af5760405162461bcd60e51b815260206004820152602560248201527f4272696467653a3a5f7065726d69743a205350454e4445525f4d5553545f424560448201527f5f5448495300000000000000000000000000000000000000000000000000000060648201526084016200076c565b604080516001600160a01b038a811660248301528981166044830152606482018990526084820188905286151560a483015260ff861660c483015260e482018590526101048083018590528351808403909101815261012490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f8fcbaf0c000000000000000000000000000000000000000000000000000000001790529151918f169162002566919062003a01565b6000604051808303816000865af19150503d8060008114620025a5576040519150601f19603f3d011682016040523d82523d6000602084013e620025aa565b606091505b50505050505050505050505050505050565b6040516001600160a01b03808516602483015283166044820152606481018290526200266f9085907f23b872dd00000000000000000000000000000000000000000000000000000000906084015b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915262002e90565b50505050565b806001620026866020600262003d8b565b62002692919062003d99565b602154106200270a5760405162461bcd60e51b815260206004820152602a60248201527f4465706f736974436f6e74726163743a5f6465706f7369743a204d45524b4c4560448201527f5f545245455f46554c4c0000000000000000000000000000000000000000000060648201526084016200076c565b6001602160008282546200271f919062003db3565b909155505060215460005b6020811015620027c957816001166001036200275f578260018260208110620027575762002757620038f3565b015550505050565b60018160208110620027755762002775620038f3565b01546040805160208101929092528101849052606001604051602081830303815290604052805190602001209250600282620027b2919062003951565b915080620027c0816200398d565b9150506200272a565b50620027d462003dce565b505050565b60225460ff16156200287a5760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a4016200076c565b6022805460ff191660011790556040517f2261efe5aef6fedc1fd1550b25facc9181745623049c7901287030b9ad1a549790600090a1565b63ffffffff8a1660009081526088602052604090205460ff16156200293f5760405162461bcd60e51b8152602060048201526024808201527f4272696467653a3a5f7665726966794c6561663a20414c52454144595f434c4160448201527f494d45440000000000000000000000000000000000000000000000000000000060648201526084016200076c565b608b546040805160208082018d90528183018c9052825180830384018152606083019384905280519101207f257b36320000000000000000000000000000000000000000000000000000000090925260648101919091526000916001600160a01b03169063257b3632906084016020604051808303816000875af1158015620029cc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620029f2919062003dfd565b9050801580159062002a115750608d5462002a0e824262003d99565b10155b62002a855760405162461bcd60e51b815260206004820152602d60248201527f4272696467653a3a5f7665726966794c6561663a20474c4f42414c5f4558495460448201527f5f524f4f545f494e56414c49440000000000000000000000000000000000000060648201526084016200076c565b60875463ffffffff87811691161462002b075760405162461bcd60e51b815260206004820152603760248201527f4272696467653a3a5f7665726966794c6561663a2044455354494e4154494f4e60448201527f5f4e4554574f524b5f444f45535f4e4f545f4d4154434800000000000000000060648201526084016200076c565b60875460009063ffffffff1662002b2057508862002b23565b50895b8351602080860191909120604080517fff0000000000000000000000000000000000000000000000000000000000000060f888901b16818501527fffffffff0000000000000000000000000000000000000000000000000000000060e08e811b821660218401526bffffffffffffffffffffffff1960608f811b82166025860152918e901b90921660398401528b901b16603d82015260518101899052607180820193909352815180820390930183526091019052805191012062002bf1908e8e63ffffffff168462000ea4565b62000c6b5760405162461bcd60e51b815260206004820181905260248201527f4272696467653a3a5f7665726966794c6561663a20534d545f494e56414c494460448201526064016200076c565b600054610100900460ff1662002cbe5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016200076c565b62000d2c3362002d25565b6055546001600160a01b0316331462000d2c5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016200076c565b605580546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6040516001600160a01b038316602482015260448101829052620027d49084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064016200260a565b60225460ff1662002e545760405162461bcd60e51b815260206004820152603b60248201527f456d657267656e63794d616e616765723a3a6966456d657267656e637953746160448201527f74653a206f6e6c7920696620656d657267656e6379207374617465000000000060648201526084016200076c565b6022805460ff191690556040517f1e5e34eea33501aecf2ebec9fe0e884a40804275ea7fe10b2ba084c8374308b390600090a1565b6020015190565b600062002ee7826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031662002f7c9092919063ffffffff16565b805190915015620027d4578080602001905181019062002f08919062003728565b620027d45760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016200076c565b606062000f9e848460008585600080866001600160a01b0316858760405162002fa6919062003a01565b60006040518083038185875af1925050503d806000811462002fe5576040519150601f19603f3d011682016040523d82523d6000602084013e62002fea565b606091505b509150915062002ffd8783838762003008565b979650505050505050565b606083156200307c57825160000362003074576001600160a01b0385163b620030745760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016200076c565b508162000f9e565b62000f9e8383815115620030935781518083602001fd5b8060405162461bcd60e51b81526004016200076c919062003e17565b6119c78062003e2d83390190565b6001600160a01b038116811462001f9457600080fd5b8035620030e081620030bd565b919050565b803563ffffffff81168114620030e057600080fd5b60008083601f8401126200310d57600080fd5b50813567ffffffffffffffff8111156200312657600080fd5b6020830191508360208285010111156200313f57600080fd5b9250929050565b60008060008060008060a087890312156200316057600080fd5b86356200316d81620030bd565b95506200317d60208801620030e5565b945060408701356200318f81620030bd565b935060608701359250608087013567ffffffffffffffff811115620031b357600080fd5b620031c189828a01620030fa565b979a9699509497509295939492505050565b60008060408385031215620031e757600080fd5b620031f283620030e5565b915060208301356200320481620030bd565b809150509250929050565b6000602082840312156200322257600080fd5b81356200322f81620030bd565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171562003291576200329162003236565b604052919050565b600082601f830112620032ab57600080fd5b8135602067ffffffffffffffff821115620032ca57620032ca62003236565b8160051b620032db82820162003265565b9283528481018201928281019087851115620032f657600080fd5b83870192505b8483101562002ffd57823582529183019190830190620032fc565b600080600080608085870312156200332e57600080fd5b84359350602085013567ffffffffffffffff808211156200334e57600080fd5b6200335c8883890162003299565b94506040870135915080821682146200337457600080fd5b509396929550929360600135925050565b60ff8116811462001f9457600080fd5b600080600080600080600060e0888a031215620033b157600080fd5b8735620033be8162003385565b9650620033ce60208901620030e5565b95506040880135620033e081620030bd565b9450620033f060608901620030e5565b935060808801356200340281620030bd565b9699959850939692959460a0840135945060c09093013592915050565b600067ffffffffffffffff8211156200343c576200343c62003236565b50601f01601f191660200190565b600082601f8301126200345c57600080fd5b8135620034736200346d826200341f565b62003265565b8181528460208386010111156200348957600080fd5b816020850160208301376000918101602001919091529392505050565b6000806000806000806000806000806101408b8d031215620034c757600080fd5b8a3567ffffffffffffffff80821115620034e057600080fd5b620034ee8e838f0162003299565b9b50620034fe60208e01620030e5565b9a5060408d0135995060608d013598506200351c60808e01620030e5565b97506200352c60a08e01620030d3565b96506200353c60c08e01620030e5565b95506200354c60e08e01620030d3565b94506101008d013593506101208d01359150808211156200356c57600080fd5b506200357b8d828e016200344a565b9150509295989b9194979a5092959850565b60008060008060808587031215620035a457600080fd5b620035af85620030e5565b93506020850135620035c181620030bd565b92506040850135620035d381620030bd565b9396929550929360600135925050565b600060208284031215620035f657600080fd5b5035919050565b600080600080600080600060a0888a0312156200361957600080fd5b6200362488620030e5565b965060208801356200363681620030bd565b9550604088013567ffffffffffffffff808211156200365457600080fd5b620036628b838c01620030fa565b909750955060608a01359150808211156200367c57600080fd5b506200368b8a828b01620030fa565b9094509250506080880135620036a18162003385565b8091505092959891949750929550565b600080600060608486031215620036c757600080fd5b620036d284620030e5565b92506020840135620036e481620030bd565b9150604084013567ffffffffffffffff8111156200370157600080fd5b6200370f868287016200344a565b9150509250925092565b801515811462001f9457600080fd5b6000602082840312156200373b57600080fd5b81516200322f8162003719565b60005b83811015620037655781810151838201526020016200374b565b838111156200266f5750506000910152565b600082601f8301126200378957600080fd5b81516200379a6200346d826200341f565b818152846020838601011115620037b057600080fd5b62000f9e82602083016020870162003748565b600060208284031215620037d657600080fd5b815167ffffffffffffffff811115620037ee57600080fd5b62000f9e8482850162003777565b6000602082840312156200380f57600080fd5b81516200322f8162003385565b600081518084526200383681602086016020860162003748565b601f01601f19169290920160200192915050565b6060815260006200385f60608301866200381c565b82810360208401526200387381866200381c565b91505060ff83166040830152949350505050565b600061010060ff8b16835263ffffffff808b1660208501526001600160a01b03808b166040860152818a1660608601528089166080860152508660a08501528160c0850152620038da828501876200381c565b925080851660e085015250509998505050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008262003988577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203620039c157620039c162003922565b5060010190565b6001600160a01b038416815263ffffffff83166020820152606060408201526000620039f860608301846200381c565b95945050505050565b6000825162003a1581846020870162003748565b9190910192915050565b60008060006060848603121562003a3557600080fd5b835167ffffffffffffffff8082111562003a4e57600080fd5b62003a5c8783880162003777565b9450602086015191508082111562003a7357600080fd5b5062003a828682870162003777565b925050604084015162003a958162003385565b809150509250925092565b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b60608152600062003ae160608301878962003aa0565b828103602084015262003af681868862003aa0565b91505060ff831660408301529695505050505050565b6000835162003b2081846020880162003748565b83519083019062003b3681836020880162003748565b01949350505050565b6000808585111562003b5057600080fd5b8386111562003b5e57600080fd5b5050820193919092039150565b600080600080600080600060e0888a03121562003b8757600080fd5b873562003b9481620030bd565b9650602088013562003ba681620030bd565b955060408801359450606088013593506080880135620034028162003385565b600080600080600080600080610100898b03121562003be457600080fd5b883562003bf181620030bd565b9750602089013562003c0381620030bd565b96506040890135955060608901359450608089013562003c238162003719565b935060a089013562003c358162003385565b979a969950949793969295929450505060c08201359160e0013590565b600181815b8085111562003cb157817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111562003c955762003c9562003922565b8085161562003ca357918102915b93841c939080029062003c57565b509250929050565b60008262003cca5750600162000dab565b8162003cd95750600062000dab565b816001811462003cf2576002811462003cfd5762003d1d565b600191505062000dab565b60ff84111562003d115762003d1162003922565b50506001821b62000dab565b5060208310610133831016604e8410600b841016171562003d42575081810a62000dab565b62003d4e838362003c52565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111562003d835762003d8362003922565b029392505050565b60006200322f838362003cb9565b60008282101562003dae5762003dae62003922565b500390565b6000821982111562003dc95762003dc962003922565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b60006020828403121562003e1057600080fd5b5051919050565b6020815260006200322f60208301846200381c56fe60c06040523480156200001157600080fd5b50604051620019c7380380620019c78339810160408190526200003491620002ad565b82826003620000448382620003c1565b506004620000538282620003c1565b5050600580546001600160a81b0319163360ff60a01b191617600160a01b60ff851602179055504660808190526200008b9062000098565b60a052506200048d915050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f620000c562000146565b805160209182012060408051808201825260018152603160f81b90840152805192830193909352918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060820152608081018390523060a082015260c001604051602081830303815290604052805190602001209050919050565b606060038054620001579062000332565b80601f0160208091040260200160405190810160405280929190818152602001828054620001859062000332565b8015620001d65780601f10620001aa57610100808354040283529160200191620001d6565b820191906000526020600020905b815481529060010190602001808311620001b857829003601f168201915b5050505050905090565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200020857600080fd5b81516001600160401b0380821115620002255762000225620001e0565b604051601f8301601f19908116603f01168101908282118183101715620002505762000250620001e0565b816040528381526020925086838588010111156200026d57600080fd5b600091505b8382101562000291578582018301518183018401529082019062000272565b83821115620002a35760008385830101525b9695505050505050565b600080600060608486031215620002c357600080fd5b83516001600160401b0380821115620002db57600080fd5b620002e987838801620001f6565b945060208601519150808211156200030057600080fd5b506200030f86828701620001f6565b925050604084015160ff811681146200032757600080fd5b809150509250925092565b600181811c908216806200034757607f821691505b6020821081036200036857634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620003bc57600081815260208120601f850160051c81016020861015620003975750805b601f850160051c820191505b81811015620003b857828155600101620003a3565b5050505b505050565b81516001600160401b03811115620003dd57620003dd620001e0565b620003f581620003ee845462000332565b846200036e565b602080601f8311600181146200042d5760008415620004145750858301515b600019600386901b1c1916600185901b178555620003b8565b600085815260208120601f198616915b828110156200045e578886015182559484019460019091019084016200043d565b50858210156200047d5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60805160a05161150d620004ba600039600061053001526000818161036f01526104fa015261150d6000f3fe608060405234801561001057600080fd5b50600436106101775760003560e01c806370a08231116100d8578063a457c2d71161008c578063d505accf11610066578063d505accf14610391578063dd62ed3e146103a6578063ffa1ad74146103ec57600080fd5b8063a457c2d714610344578063a9059cbb14610357578063cd0d00961461036a57600080fd5b806395d89b41116100bd57806395d89b41146102e45780639dc29fac146102ec578063a3c573eb146102ff57600080fd5b806370a082311461028e5780637ecebe00146102c457600080fd5b806330adf81f1161012f5780633644e515116101145780633644e51514610260578063395093511461026857806340c10f191461027b57600080fd5b806330adf81f14610209578063313ce5671461023057600080fd5b806318160ddd1161016057806318160ddd146101bd57806320606b70146101cf57806323b872dd146101f657600080fd5b806306fdde031461017c578063095ea7b31461019a575b600080fd5b610184610428565b604051610191919061123b565b60405180910390f35b6101ad6101a83660046112d7565b6104ba565b6040519015158152602001610191565b6002545b604051908152602001610191565b6101c17f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81565b6101ad610204366004611301565b6104d2565b6101c17f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b60055474010000000000000000000000000000000000000000900460ff1660405160ff9091168152602001610191565b6101c16104f6565b6101ad6102763660046112d7565b610552565b6101ad6102893660046112d7565b61059e565b6101c161029c36600461133d565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6101c16102d236600461133d565b60066020526000908152604090205481565b610184610645565b6101ad6102fa3660046112d7565b610654565b60055461031f9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610191565b6101ad6103523660046112d7565b6106ed565b6101ad6103653660046112d7565b6107a4565b6101c17f000000000000000000000000000000000000000000000000000000000000000081565b6103a461039f36600461135f565b6107b2565b005b6101c16103b43660046113d2565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6101846040518060400160405280600181526020017f310000000000000000000000000000000000000000000000000000000000000081525081565b60606003805461043790611405565b80601f016020809104026020016040519081016040528092919081815260200182805461046390611405565b80156104b05780601f10610485576101008083540402835291602001916104b0565b820191906000526020600020905b81548152906001019060200180831161049357829003601f168201915b5050505050905090565b6000336104c8818585610ab4565b5060019392505050565b6000336104e0858285610c34565b6104eb858585610cf1565b506001949350505050565b60007f0000000000000000000000000000000000000000000000000000000000000000461461052d5761052846610f12565b905090565b507f000000000000000000000000000000000000000000000000000000000000000090565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906104c89082908690610599908790611487565b610ab4565b60055460009073ffffffffffffffffffffffffffffffffffffffff1633146106325760405162461bcd60e51b8152602060048201526024808201527f546f6b656e577261707065643a3a6f6e6c794272696467653a204e4f545f425260448201527f494447450000000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b61063c8383610fda565b50600192915050565b60606004805461043790611405565b60055460009073ffffffffffffffffffffffffffffffffffffffff1633146106e35760405162461bcd60e51b8152602060048201526024808201527f546f6b656e577261707065643a3a6f6e6c794272696467653a204e4f545f425260448201527f49444745000000000000000000000000000000000000000000000000000000006064820152608401610629565b61063c83836110b3565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190838110156107975760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f0000000000000000000000000000000000000000000000000000006064820152608401610629565b6104eb8286868403610ab4565b6000336104c8818585610cf1565b834211156108275760405162461bcd60e51b8152602060048201526024808201527f546f6b656e577261707065643a3a7065726d69743a204578706972656420706560448201527f726d6974000000000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff8716600090815260066020526040812080547f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918a918a918a9190866108818361149f565b9091555060408051602081019690965273ffffffffffffffffffffffffffffffffffffffff94851690860152929091166060840152608083015260a082015260c0810186905260e00160405160208183030381529060405280519060200120905060006108ec6104f6565b6040517f19010000000000000000000000000000000000000000000000000000000000006020820152602281019190915260428101839052606201604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282528051602091820120600080855291840180845281905260ff89169284019290925260608301879052608083018690529092509060019060a0016020604051602081039080840390855afa1580156109b0573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811615801590610a2b57508973ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b610a9d5760405162461bcd60e51b815260206004820152602760248201527f546f6b656e577261707065643a3a7065726d69743a20496e76616c696420736960448201527f676e6174757265000000000000000000000000000000000000000000000000006064820152608401610629565b610aa88a8a8a610ab4565b50505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff8316610b3c5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff8216610bc55760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610ceb5781811015610cde5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610629565b610ceb8484848403610ab4565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610d7a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff8216610e035760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610e9f5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610ceb565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f610f3d610428565b8051602091820120604080518082018252600181527f310000000000000000000000000000000000000000000000000000000000000090840152805192830193909352918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060820152608081018390523060a082015260c001604051602081830303815290604052805190602001209050919050565b73ffffffffffffffffffffffffffffffffffffffff821661103d5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610629565b806002600082825461104f9190611487565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b73ffffffffffffffffffffffffffffffffffffffff821661113c5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260208190526040902054818110156111d85760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f63650000000000000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff83166000818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101610c27565b600060208083528351808285015260005b818110156112685785810183015185820160400152820161124c565b8181111561127a576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146112d257600080fd5b919050565b600080604083850312156112ea57600080fd5b6112f3836112ae565b946020939093013593505050565b60008060006060848603121561131657600080fd5b61131f846112ae565b925061132d602085016112ae565b9150604084013590509250925092565b60006020828403121561134f57600080fd5b611358826112ae565b9392505050565b600080600080600080600060e0888a03121561137a57600080fd5b611383886112ae565b9650611391602089016112ae565b95506040880135945060608801359350608088013560ff811681146113b557600080fd5b9699959850939692959460a0840135945060c09093013592915050565b600080604083850312156113e557600080fd5b6113ee836112ae565b91506113fc602084016112ae565b90509250929050565b600181811c9082168061141957607f821691505b602082108103611452577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000821982111561149a5761149a611458565b500190565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036114d0576114d0611458565b506001019056fea264697066735822122094134962e5fa2f6357086a2590b7f3a754d340b16e5312664d82a308bc23a0df64736f6c634300080f0033a264697066735822122038131c24024bbc952c3d2f624475606fbf73b929bdaad1a58995cc43510513a064736f6c634300080f0033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/compiled-contracts/BridgeMock.json b/compiled-contracts/BridgeMock.json index 27a807c3d..777068e20 100644 --- a/compiled-contracts/BridgeMock.json +++ b/compiled-contracts/BridgeMock.json @@ -815,8 +815,8 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b50615b04806100206000396000f3fe608060405260043610620001ff5760003560e01c80637b6323c11162000117578063d02103ca11620000a1578063e7a5b4ea116200006c578063e7a5b4ea14620006de578063ed6be5c91462000703578063f2fde38b146200071a578063ff634ed7146200073f57600080fd5b8063d02103ca1462000659578063d96a15f7146200067b578063dbc169761462000692578063e737588114620006aa57600080fd5b806391e57e2d11620000e257806391e57e2d14620005bd578063a08e8a0814620005d5578063aaa13cc214620005ff578063bab161bf146200062457600080fd5b80637b6323c1146200051c57806381b1c17414620005415780638da5cb5b146200057b5780638f611519146200059b57600080fd5b80632dfdf0b511620001995780633e19704311620001645780633e19704314620003d95780634638554914620004ba5780636555954014620004df578063715018a6146200050457600080fd5b80632dfdf0b51462000315578063318aee3d146200032d5780633ae05047146200039c5780633da8168214620003b457600080fd5b80632072f6c511620001da5780632072f6c5146200027557806322e95f2c146200028d5780632b5e42e714620002cb5780632c3f58cd14620002f057600080fd5b80630871e97114620002045780630e1da6c3146200021d57806315064c961462000248575b600080fd5b6200021b6200021536600462003351565b62000756565b005b3480156200022a57600080fd5b5062000235608d5481565b6040519081526020015b60405180910390f35b3480156200025557600080fd5b50602254620002649060ff1681565b60405190151581526020016200023f565b3480156200028257600080fd5b506200021b62000812565b3480156200029a57600080fd5b50620002b2620002ac366004620033de565b620008c6565b6040516001600160a01b0390911681526020016200023f565b348015620002d857600080fd5b506200021b620002ea3660046200341a565b62000949565b348015620002fd57600080fd5b506200021b6200030f36600462003434565b62000958565b3480156200032257600080fd5b506200023560215481565b3480156200033a57600080fd5b50620003776200034c36600462003452565b608a6020526000908152604090205463ffffffff81169064010000000090046001600160a01b031682565b6040805163ffffffff90931683526001600160a01b039091166020830152016200023f565b348015620003a957600080fd5b506200023562000999565b348015620003c157600080fd5b5062000264620003d336600462003553565b62000a8c565b348015620003e657600080fd5b5062000235620003f8366004620035d1565b6040517fff0000000000000000000000000000000000000000000000000000000000000060f889901b1660208201527fffffffff0000000000000000000000000000000000000000000000000000000060e088811b821660218401526bffffffffffffffffffffffff19606089811b821660258601529188901b909216603984015285901b16603d8201526051810183905260718101829052600090609101604051602081830303815290604052805190602001209050979650505050505050565b348015620004c757600080fd5b506200021b620004d9366004620036e2565b62000b8c565b348015620004ec57600080fd5b506200021b620004fe366004620037c9565b62000e12565b3480156200051157600080fd5b506200021b62001004565b3480156200052957600080fd5b506200021b6200053b366004620036e2565b6200101a565b3480156200054e57600080fd5b50620002b2620005603660046200341a565b6089602052600090815260409020546001600160a01b031681565b3480156200058857600080fd5b506055546001600160a01b0316620002b2565b348015620005a857600080fd5b50608c54620002b2906001600160a01b031681565b348015620005ca57600080fd5b5062000235608e5481565b348015620005e257600080fd5b50620005ec600081565b60405160ff90911681526020016200023f565b3480156200060c57600080fd5b50620002b26200061e3660046200381f565b620015dc565b3480156200063157600080fd5b50608754620006439063ffffffff1681565b60405163ffffffff90911681526020016200023f565b3480156200066657600080fd5b50608b54620002b2906001600160a01b031681565b6200021b6200068c366004620038d3565b62001748565b3480156200069f57600080fd5b506200021b620019fc565b348015620006b757600080fd5b5062000264620006c93660046200341a565b60886020526000908152604090205460ff1681565b348015620006eb57600080fd5b506200021b620006fd3660046200341a565b62001aae565b3480156200071057600080fd5b5062000643600081565b3480156200072757600080fd5b506200021b6200073936600462003452565b62001af3565b3480156200074c57600080fd5b50620005ec600181565b608e54341115620007fa5760405162461bcd60e51b815260206004820152604a60248201527f4272696467653a3a6272696467653a2043616e6e6f7420627269646765206d6f60448201527f7265207468616e206d6178457468657242726964676520696e20696e7465726e60648201527f616c20746573746e657400000000000000000000000000000000000000000000608482015260a4015b60405180910390fd5b6200080a86868686868662001b89565b505050505050565b608c546001600160a01b03163314620008ba5760405162461bcd60e51b815260206004820152604b60248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7950726f6f664f66456660448201527f66696369656e63793a206f6e6c792050726f6f66206f6620456666696369656e60648201527f637920636f6e7472616374000000000000000000000000000000000000000000608482015260a401620007f1565b620008c46200212f565b565b6040805160e084901b7fffffffff0000000000000000000000000000000000000000000000000000000016602080830191909152606084901b6bffffffffffffffffffffffff1916602483015282516018818403018152603890920183528151918101919091206000908152608990915220546001600160a01b03165b92915050565b6200095362002208565b608e55565b6200096262002208565b608780547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001663ffffffff92909216919091179055565b602154600090819081805b602081101562000a83578260011660010362000a045760018160208110620009d057620009d06200393b565b0154604080516020810192909252810185905260600160405160208183030381529060405280519060200120935062000a31565b60408051602081018690529081018390526060016040516020818303038152906040528051906020012093505b62000a3e60028462003999565b6040805160208101859052908101849052909350606001604051602081830303815290604052805190602001209150808062000a7a90620039d5565b915050620009a4565b50919392505050565b60008467ffffffffffffffff8416825b602081101562000b7f578160011660010362000b095786818151811062000ac75762000ac76200393b565b60200260200101518360405160200162000aeb929190918252602082015260400190565b60405160208183030381529060405280519060200120925062000b5b565b8287828151811062000b1f5762000b1f6200393b565b602002602001015160405160200162000b42929190918252602082015260400190565b6040516020818303038152906040528051906020012092505b62000b6860028362003999565b91508062000b7681620039d5565b91505062000a9c565b5050909114949350505050565b60225460ff161562000c2d5760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a401620007f1565b62000c438a8a8a8a8a8a8a8a8a8a600162002264565b63ffffffff8916600090815260886020526040808220805460ff19166001179055516001600160a01b03851690849062000c869089908b90879060240162003a6d565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1806b5f2000000000000000000000000000000000000000000000000000000001790525162000ceb919062003aa6565b60006040518083038185875af1925050503d806000811462000d2a576040519150601f19603f3d011682016040523d82523d6000602084013e62000d2f565b606091505b505090508062000da75760405162461bcd60e51b8152602060048201526024808201527f4272696467653a3a636c61696d4d6573736167653a204d4553534147455f464160448201527f494c4544000000000000000000000000000000000000000000000000000000006064820152608401620007f1565b6040805163ffffffff8c81168252891660208201526001600160a01b0388811682840152861660608201526080810185905290517f25308c93ceeed162da955b3f7ce3e3f93606579e40fb92029faa9efe275459839181900360a00190a15050505050505050505050565b600054610100900460ff161580801562000e335750600054600160ff909116105b8062000e4f5750303b15801562000e4f575060005460ff166001145b62000ec35760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401620007f1565b6000805460ff19166001179055801562000f0457600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6087805463ffffffff87167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000909116179055608b80546001600160a01b038087167fffffffffffffffffffffffff000000000000000000000000000000000000000092831617909255608c805492861692909116919091179055608d8290556703782dace9d90000608e5562000f99620025f1565b801562000ffd57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b6200100e62002208565b620008c4600062002676565b60225460ff1615620010bb5760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a401620007f1565b620010d18a8a8a8a8a8a8a8a8a8a600062002264565b63ffffffff89166000908152608860205260409020805460ff191660011790556001600160a01b038516620011f057604080516000808252602082019092526001600160a01b0385169084906040516200112c919062003aa6565b60006040518083038185875af1925050503d80600081146200116b576040519150601f19603f3d011682016040523d82523d6000602084013e62001170565b606091505b5050905080620011e95760405162461bcd60e51b815260206004820152602760248201527f4272696467653a3a636c61696d41737365743a204554485f5452414e5346455260448201527f5f4641494c4544000000000000000000000000000000000000000000000000006064820152608401620007f1565b5062001572565b60875463ffffffff9081169087160362001220576200121a6001600160a01b0386168484620026e0565b62001572565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e088901b1660208201526bffffffffffffffffffffffff19606087901b16602482015260009060380160408051601f198184030181529181528151602092830120600081815260899093529120549091506001600160a01b031680620014de57600080600085806020019051810190620012c0919062003b18565b925092509250600085848484604051620012da90620032ba565b620012e89392919062003b99565b8190604051809103906000f590508015801562001309573d6000803e3d6000fd5b506040517f40c10f190000000000000000000000000000000000000000000000000000000081526001600160a01b038b81166004830152602482018b9052919250908216906340c10f19906044016020604051808303816000875af115801562001377573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200139d919062003be5565b50806089600088815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060405180604001604052808d63ffffffff1681526020018c6001600160a01b0316815250608a6000836001600160a01b03166001600160a01b0316815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a8154816001600160a01b0302191690836001600160a01b031602179055509050507fccd7715648d1f2bb13e158f96b5b6c3aeda555d4cb87112e274a6f28bc571d598c8c83604051620014cc9392919063ffffffff9390931683526001600160a01b03918216602084015216604082015260600190565b60405180910390a1505050506200156f565b6040517f40c10f190000000000000000000000000000000000000000000000000000000081526001600160a01b038681166004830152602482018690528216906340c10f19906044016020604051808303816000875af115801562001547573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200156d919062003be5565b505b50505b6040805163ffffffff8b81168252881660208201526001600160a01b0387811682840152851660608201526080810184905290517f25308c93ceeed162da955b3f7ce3e3f93606579e40fb92029faa9efe275459839181900360a00190a150505050505050505050565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e089901b1660208201526bffffffffffffffffffffffff19606088901b1660248201526000908190603801604051602081830303815290604052805190602001209050600060ff60f81b3083604051806020016200165f90620032ba565b601f1982820381018352601f9091011660408190526200168c908d908d908d908d908d9060200162003c30565b60408051601f1981840301815290829052620016ac929160200162003c71565b604051602081830303815290604052805190602001206040516020016200172294939291907fff0000000000000000000000000000000000000000000000000000000000000094909416845260609290921b6bffffffffffffffffffffffff191660018401526015830152603582015260550190565b60408051808303601f1901815291905280516020909101209a9950505050505050505050565b60225460ff1615620017e95760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a401620007f1565b60875463ffffffff908116908416036200186c5760405162461bcd60e51b815260206004820152602a60248201527f4272696467653a3a6272696467653a2044455354494e4154494f4e5f43414e5460448201527f5f42455f495453454c46000000000000000000000000000000000000000000006064820152608401620007f1565b6087546021546040517f501781209a1f8899323b96b4ef08b168df93e0a90c673d1e4cce39366cb62f9b92620018b99260019263ffffffff9092169133918991899134918a919062003ca4565b60405180910390a16087548151602080840191909120604080517f0100000000000000000000000000000000000000000000000000000000000000818501527fffffffff0000000000000000000000000000000000000000000000000000000060e095861b811660218301526bffffffffffffffffffffffff1933606090811b82166025850152968a901b90911660398301529487901b909416603d8501523460518501526071808501929092528051808503909201825260919093019092528151910120620019899062002790565b608b546001600160a01b03166333d6247d620019a462000999565b6040518263ffffffff1660e01b8152600401620019c391815260200190565b600060405180830381600087803b158015620019de57600080fd5b505af1158015620019f3573d6000803e3d6000fd5b50505050505050565b608c546001600160a01b0316331462001aa45760405162461bcd60e51b815260206004820152604b60248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7950726f6f664f66456660448201527f66696369656e63793a206f6e6c792050726f6f66206f6620456666696369656e60648201527f637920636f6e7472616374000000000000000000000000000000000000000000608482015260a401620007f1565b620008c4620028ef565b62001ab862002208565b608d8190556040518181527f126d6a8888996898896a660f1c9a7a4ef612bd6df82281a13079dd27cc38758d9060200160405180910390a150565b62001afd62002208565b6001600160a01b03811662001b7b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401620007f1565b62001b868162002676565b50565b60225460ff161562001c2a5760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a401620007f1565b60875463ffffffff9081169086160362001cad5760405162461bcd60e51b815260206004820152602a60248201527f4272696467653a3a6272696467653a2044455354494e4154494f4e5f43414e5460448201527f5f42455f495453454c46000000000000000000000000000000000000000000006064820152608401620007f1565b60008060606001600160a01b03891662001d425785341462001d385760405162461bcd60e51b815260206004820152602f60248201527f4272696467653a3a6272696467653a20414d4f554e545f444f45535f4e4f545f60448201527f4d415443485f4d53475f56414c554500000000000000000000000000000000006064820152608401620007f1565b6000915062001fcc565b6001600160a01b03808a166000908152608a602090815260409182902082518084019093525463ffffffff811683526401000000009004909216918101829052901562001e29576040517f9dc29fac000000000000000000000000000000000000000000000000000000008152336004820152602481018890526001600160a01b038b1690639dc29fac906044016020604051808303816000875af115801562001df0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001e16919062003be5565b5060208101518151909450925062001fca565b841562001e3e5762001e3e8a8888886200299e565b62001e556001600160a01b038b1633308a62002fc3565b899350608760009054906101000a900463ffffffff169250896001600160a01b03166306fdde036040518163ffffffff1660e01b8152600401600060405180830381865afa15801562001eac573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001ed6919081019062003d10565b8a6001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa15801562001f15573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001f3f919081019062003d10565b8b6001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001f7e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001fa4919062003d49565b60405160200162001fb89392919062003b99565b60405160208183030381529060405291505b505b7f501781209a1f8899323b96b4ef08b168df93e0a90c673d1e4cce39366cb62f9b600083858b8b8b876021546040516200200e98979695949392919062003ca4565b60405180910390a18051602080830191909120604080516000818501527fffffffff0000000000000000000000000000000000000000000000000000000060e087811b821660218401526bffffffffffffffffffffffff1960608a811b82166025860152918f901b90921660398401528c901b16603d820152605181018a90526071808201939093528151808203909301835260910190528051910120620020b69062002790565b608b546001600160a01b03166333d6247d620020d162000999565b6040518263ffffffff1660e01b8152600401620020f091815260200190565b600060405180830381600087803b1580156200210b57600080fd5b505af115801562002120573d6000803e3d6000fd5b50505050505050505050505050565b60225460ff1615620021d05760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a401620007f1565b6022805460ff191660011790556040517f2261efe5aef6fedc1fd1550b25facc9181745623049c7901287030b9ad1a549790600090a1565b6055546001600160a01b03163314620008c45760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401620007f1565b63ffffffff8a1660009081526088602052604090205460ff1615620022f15760405162461bcd60e51b8152602060048201526024808201527f4272696467653a3a5f7665726966794c6561663a20414c52454144595f434c4160448201527f494d4544000000000000000000000000000000000000000000000000000000006064820152608401620007f1565b608b546040805160208082018d90528183018c9052825180830384018152606083019384905280519101207f257b36320000000000000000000000000000000000000000000000000000000090925260648101919091526000916001600160a01b03169063257b3632906084016020604051808303816000875af11580156200237e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620023a4919062003d69565b90508015801590620023c35750608d54620023c0824262003d83565b10155b620024375760405162461bcd60e51b815260206004820152602d60248201527f4272696467653a3a5f7665726966794c6561663a20474c4f42414c5f4558495460448201527f5f524f4f545f494e56414c4944000000000000000000000000000000000000006064820152608401620007f1565b60875463ffffffff878116911614620024b95760405162461bcd60e51b815260206004820152603760248201527f4272696467653a3a5f7665726966794c6561663a2044455354494e4154494f4e60448201527f5f4e4554574f524b5f444f45535f4e4f545f4d415443480000000000000000006064820152608401620007f1565b60875460009063ffffffff16620024d2575088620024d5565b50895b8351602080860191909120604080517fff0000000000000000000000000000000000000000000000000000000000000060f888901b16818501527fffffffff0000000000000000000000000000000000000000000000000000000060e08e811b821660218401526bffffffffffffffffffffffff1960608f811b82166025860152918e901b90921660398401528b901b16603d820152605181018990526071808201939093528151808203909301835260910190528051910120620025a3908e8e63ffffffff168462000a8c565b620021205760405162461bcd60e51b815260206004820181905260248201527f4272696467653a3a5f7665726966794c6561663a20534d545f494e56414c49446044820152606401620007f1565b600054610100900460ff16620026705760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401620007f1565b620008c4335b605580546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6040516001600160a01b0383166024820152604481018290526200278b9084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526200301c565b505050565b806001620027a16020600262003ed6565b620027ad919062003d83565b60215410620028255760405162461bcd60e51b815260206004820152602a60248201527f4465706f736974436f6e74726163743a5f6465706f7369743a204d45524b4c4560448201527f5f545245455f46554c4c000000000000000000000000000000000000000000006064820152608401620007f1565b6001602160008282546200283a919062003ee4565b909155505060215460005b6020811015620028e457816001166001036200287a5782600182602081106200287257620028726200393b565b015550505050565b600181602081106200289057620028906200393b565b01546040805160208101929092528101849052606001604051602081830303815290604052805190602001209250600282620028cd919062003999565b915080620028db81620039d5565b91505062002845565b506200278b62003eff565b60225460ff16620029695760405162461bcd60e51b815260206004820152603b60248201527f456d657267656e63794d616e616765723a3a6966456d657267656e637953746160448201527f74653a206f6e6c7920696620656d657267656e637920737461746500000000006064820152608401620007f1565b6022805460ff191690556040517f1e5e34eea33501aecf2ebec9fe0e884a40804275ea7fe10b2ba084c8374308b390600090a1565b6000620029e183838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506200310892505050565b90507f2afa5331000000000000000000000000000000000000000000000000000000007fffffffff0000000000000000000000000000000000000000000000000000000082160162002ce357600080808080808062002a44896004818d62003f2e565b81019062002a53919062003f5a565b9650965096509650965096509650336001600160a01b0316876001600160a01b03161462002aea5760405162461bcd60e51b815260206004820152603060248201527f4272696467653a3a5f7065726d69743a205045524d49545f4f574e45525f4d5560448201527f53545f42455f5448455f53454e444552000000000000000000000000000000006064820152608401620007f1565b6001600160a01b038616301462002b6a5760405162461bcd60e51b815260206004820152602560248201527f4272696467653a3a5f7065726d69743a205350454e4445525f4d5553545f424560448201527f5f544849530000000000000000000000000000000000000000000000000000006064820152608401620007f1565b8a851462002be15760405162461bcd60e51b815260206004820152602d60248201527f4272696467653a3a5f7065726d69743a205045524d49545f414d4f554e545f4460448201527f4f45535f4e4f545f4d41544348000000000000000000000000000000000000006064820152608401620007f1565b604080516001600160a01b0389811660248301528881166044830152606482018890526084820187905260ff861660a483015260c4820185905260e48083018590528351808403909101815261010490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fd505accf000000000000000000000000000000000000000000000000000000001790529151918e169162002c8f919062003aa6565b6000604051808303816000865af19150503d806000811462002cce576040519150601f19603f3d011682016040523d82523d6000602084013e62002cd3565b606091505b5050505050505050505062000ffd565b7fffffffff0000000000000000000000000000000000000000000000000000000081167f8fcbaf0c000000000000000000000000000000000000000000000000000000001462002d765760405162461bcd60e51b815260206004820152601f60248201527f4272696467653a3a5f7065726d69743a204e4f545f56414c49445f43414c4c006044820152606401620007f1565b60008080808080808062002d8e8a6004818e62003f2e565b81019062002d9d919062003fb5565b97509750975097509750975097509750336001600160a01b0316886001600160a01b03161462002e365760405162461bcd60e51b815260206004820152603060248201527f4272696467653a3a5f7065726d69743a205045524d49545f4f574e45525f4d5560448201527f53545f42455f5448455f53454e444552000000000000000000000000000000006064820152608401620007f1565b6001600160a01b038716301462002eb65760405162461bcd60e51b815260206004820152602560248201527f4272696467653a3a5f7065726d69743a205350454e4445525f4d5553545f424560448201527f5f544849530000000000000000000000000000000000000000000000000000006064820152608401620007f1565b604080516001600160a01b038a811660248301528981166044830152606482018990526084820188905286151560a483015260ff861660c483015260e482018590526101048083018590528351808403909101815261012490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f8fcbaf0c000000000000000000000000000000000000000000000000000000001790529151918f169162002f6d919062003aa6565b6000604051808303816000865af19150503d806000811462002fac576040519150601f19603f3d011682016040523d82523d6000602084013e62002fb1565b606091505b50505050505050505050505050505050565b6040516001600160a01b0380851660248301528316604482015260648101829052620030169085907f23b872dd000000000000000000000000000000000000000000000000000000009060840162002726565b50505050565b600062003073826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166200310f9092919063ffffffff16565b8051909150156200278b578080602001905181019062003094919062003be5565b6200278b5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401620007f1565b6020015190565b60606200312084846000856200312a565b90505b9392505050565b606082471015620031a45760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401620007f1565b6001600160a01b0385163b620031fd5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401620007f1565b600080866001600160a01b031685876040516200321b919062003aa6565b60006040518083038185875af1925050503d80600081146200325a576040519150601f19603f3d011682016040523d82523d6000602084013e6200325f565b606091505b5091509150620032718282866200327c565b979650505050505050565b606083156200328d57508162003123565b8251156200329e5782518084602001fd5b8160405162461bcd60e51b8152600401620007f1919062004041565b611a78806200405783390190565b6001600160a01b038116811462001b8657600080fd5b8035620032eb81620032c8565b919050565b803563ffffffff81168114620032eb57600080fd5b60008083601f8401126200331857600080fd5b50813567ffffffffffffffff8111156200333157600080fd5b6020830191508360208285010111156200334a57600080fd5b9250929050565b60008060008060008060a087890312156200336b57600080fd5b86356200337881620032c8565b95506200338860208801620032f0565b945060408701356200339a81620032c8565b935060608701359250608087013567ffffffffffffffff811115620033be57600080fd5b620033cc89828a0162003305565b979a9699509497509295939492505050565b60008060408385031215620033f257600080fd5b620033fd83620032f0565b915060208301356200340f81620032c8565b809150509250929050565b6000602082840312156200342d57600080fd5b5035919050565b6000602082840312156200344757600080fd5b6200312382620032f0565b6000602082840312156200346557600080fd5b81356200312381620032c8565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715620034cd57620034cd62003472565b604052919050565b600082601f830112620034e757600080fd5b8135602067ffffffffffffffff82111562003506576200350662003472565b8160051b62003517828201620034a1565b92835284810182019282810190878511156200353257600080fd5b83870192505b84831015620032715782358252918301919083019062003538565b600080600080608085870312156200356a57600080fd5b84359350602085013567ffffffffffffffff808211156200358a57600080fd5b6200359888838901620034d5565b9450604087013591508082168214620035b057600080fd5b509396929550929360600135925050565b60ff8116811462001b8657600080fd5b600080600080600080600060e0888a031215620035ed57600080fd5b8735620035fa81620035c1565b96506200360a60208901620032f0565b955060408801356200361c81620032c8565b94506200362c60608901620032f0565b935060808801356200363e81620032c8565b9699959850939692959460a0840135945060c09093013592915050565b600067ffffffffffffffff82111562003678576200367862003472565b50601f01601f191660200190565b600082601f8301126200369857600080fd5b8135620036af620036a9826200365b565b620034a1565b818152846020838601011115620036c557600080fd5b816020850160208301376000918101602001919091529392505050565b6000806000806000806000806000806101408b8d0312156200370357600080fd5b8a3567ffffffffffffffff808211156200371c57600080fd5b6200372a8e838f01620034d5565b9b506200373a60208e01620032f0565b9a5060408d0135995060608d013598506200375860808e01620032f0565b97506200376860a08e01620032de565b96506200377860c08e01620032f0565b95506200378860e08e01620032de565b94506101008d013593506101208d0135915080821115620037a857600080fd5b50620037b78d828e0162003686565b9150509295989b9194979a5092959850565b60008060008060808587031215620037e057600080fd5b620037eb85620032f0565b93506020850135620037fd81620032c8565b925060408501356200380f81620032c8565b9396929550929360600135925050565b600080600080600080600060a0888a0312156200383b57600080fd5b6200384688620032f0565b965060208801356200385881620032c8565b9550604088013567ffffffffffffffff808211156200387657600080fd5b620038848b838c0162003305565b909750955060608a01359150808211156200389e57600080fd5b50620038ad8a828b0162003305565b9094509250506080880135620038c381620035c1565b8091505092959891949750929550565b600080600060608486031215620038e957600080fd5b620038f484620032f0565b925060208401356200390681620032c8565b9150604084013567ffffffffffffffff8111156200392357600080fd5b620039318682870162003686565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082620039d0577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820362003a095762003a096200396a565b5060010190565b60005b8381101562003a2d57818101518382015260200162003a13565b83811115620030165750506000910152565b6000815180845262003a5981602086016020860162003a10565b601f01601f19169290920160200192915050565b6001600160a01b038416815263ffffffff8316602082015260606040820152600062003a9d606083018462003a3f565b95945050505050565b6000825162003aba81846020870162003a10565b9190910192915050565b600082601f83011262003ad657600080fd5b815162003ae7620036a9826200365b565b81815284602083860101111562003afd57600080fd5b62003b1082602083016020870162003a10565b949350505050565b60008060006060848603121562003b2e57600080fd5b835167ffffffffffffffff8082111562003b4757600080fd5b62003b558783880162003ac4565b9450602086015191508082111562003b6c57600080fd5b5062003b7b8682870162003ac4565b925050604084015162003b8e81620035c1565b809150509250925092565b60608152600062003bae606083018662003a3f565b828103602084015262003bc2818662003a3f565b91505060ff83166040830152949350505050565b801515811462001b8657600080fd5b60006020828403121562003bf857600080fd5b8151620031238162003bd6565b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b60608152600062003c4660608301878962003c05565b828103602084015262003c5b81868862003c05565b91505060ff831660408301529695505050505050565b6000835162003c8581846020880162003a10565b83519083019062003c9b81836020880162003a10565b01949350505050565b600061010060ff8b16835263ffffffff808b1660208501526001600160a01b03808b166040860152818a1660608601528089166080860152508660a08501528160c085015262003cf78285018762003a3f565b925080851660e085015250509998505050505050505050565b60006020828403121562003d2357600080fd5b815167ffffffffffffffff81111562003d3b57600080fd5b62003b108482850162003ac4565b60006020828403121562003d5c57600080fd5b81516200312381620035c1565b60006020828403121562003d7c57600080fd5b5051919050565b60008282101562003d985762003d986200396a565b500390565b600181815b8085111562003dfc57817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111562003de05762003de06200396a565b8085161562003dee57918102915b93841c939080029062003da2565b509250929050565b60008262003e155750600162000943565b8162003e245750600062000943565b816001811462003e3d576002811462003e485762003e68565b600191505062000943565b60ff84111562003e5c5762003e5c6200396a565b50506001821b62000943565b5060208310610133831016604e8410600b841016171562003e8d575081810a62000943565b62003e99838362003d9d565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111562003ece5762003ece6200396a565b029392505050565b600062003123838362003e04565b6000821982111562003efa5762003efa6200396a565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b6000808585111562003f3f57600080fd5b8386111562003f4d57600080fd5b5050820193919092039150565b600080600080600080600060e0888a03121562003f7657600080fd5b873562003f8381620032c8565b9650602088013562003f9581620032c8565b9550604088013594506060880135935060808801356200363e81620035c1565b600080600080600080600080610100898b03121562003fd357600080fd5b883562003fe081620032c8565b9750602089013562003ff281620032c8565b965060408901359550606089013594506080890135620040128162003bd6565b935060a08901356200402481620035c1565b979a969950949793969295929450505060c08201359160e0013590565b60208152600062003123602083018462003a3f56fe60c06040523480156200001157600080fd5b5060405162001a7838038062001a788339810160408190526200003491620002ad565b82826003620000448382620003c1565b506004620000538282620003c1565b5050600580546001600160a81b0319163360ff60a01b191617600160a01b60ff851602179055504660808190526200008b9062000098565b60a052506200048d915050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f620000c562000146565b805160209182012060408051808201825260018152603160f81b90840152805192830193909352918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060820152608081018390523060a082015260c001604051602081830303815290604052805190602001209050919050565b606060038054620001579062000332565b80601f0160208091040260200160405190810160405280929190818152602001828054620001859062000332565b8015620001d65780601f10620001aa57610100808354040283529160200191620001d6565b820191906000526020600020905b815481529060010190602001808311620001b857829003601f168201915b5050505050905090565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200020857600080fd5b81516001600160401b0380821115620002255762000225620001e0565b604051601f8301601f19908116603f01168101908282118183101715620002505762000250620001e0565b816040528381526020925086838588010111156200026d57600080fd5b600091505b8382101562000291578582018301518183018401529082019062000272565b83821115620002a35760008385830101525b9695505050505050565b600080600060608486031215620002c357600080fd5b83516001600160401b0380821115620002db57600080fd5b620002e987838801620001f6565b945060208601519150808211156200030057600080fd5b506200030f86828701620001f6565b925050604084015160ff811681146200032757600080fd5b809150509250925092565b600181811c908216806200034757607f821691505b6020821081036200036857634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620003bc57600081815260208120601f850160051c81016020861015620003975750805b601f850160051c820191505b81811015620003b857828155600101620003a3565b5050505b505050565b81516001600160401b03811115620003dd57620003dd620001e0565b620003f581620003ee845462000332565b846200036e565b602080601f8311600181146200042d5760008415620004145750858301515b600019600386901b1c1916600185901b178555620003b8565b600085815260208120601f198616915b828110156200045e578886015182559484019460019091019084016200043d565b50858210156200047d5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60805160a0516115be620004ba600039600061053001526000818161036f01526104fa01526115be6000f3fe608060405234801561001057600080fd5b50600436106101775760003560e01c806370a08231116100d8578063a457c2d71161008c578063d505accf11610066578063d505accf14610391578063dd62ed3e146103a6578063ffa1ad74146103ec57600080fd5b8063a457c2d714610344578063a9059cbb14610357578063cd0d00961461036a57600080fd5b806395d89b41116100bd57806395d89b41146102e45780639dc29fac146102ec578063a3c573eb146102ff57600080fd5b806370a082311461028e5780637ecebe00146102c457600080fd5b806330adf81f1161012f5780633644e515116101145780633644e51514610260578063395093511461026857806340c10f191461027b57600080fd5b806330adf81f14610209578063313ce5671461023057600080fd5b806318160ddd1161016057806318160ddd146101bd57806320606b70146101cf57806323b872dd146101f657600080fd5b806306fdde031461017c578063095ea7b31461019a575b600080fd5b610184610428565b60405161019191906112d5565b60405180910390f35b6101ad6101a8366004611371565b6104ba565b6040519015158152602001610191565b6002545b604051908152602001610191565b6101c17f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81565b6101ad61020436600461139b565b6104d2565b6101c17f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b60055474010000000000000000000000000000000000000000900460ff1660405160ff9091168152602001610191565b6101c16104f6565b6101ad610276366004611371565b610552565b6101ad610289366004611371565b61059e565b6101c161029c3660046113d7565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6101c16102d23660046113d7565b60066020526000908152604090205481565b610184610645565b6101ad6102fa366004611371565b610654565b60055461031f9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610191565b6101ad610352366004611371565b6106ed565b6101ad610365366004611371565b6107a4565b6101c17f000000000000000000000000000000000000000000000000000000000000000081565b6103a461039f3660046113f9565b6107b2565b005b6101c16103b436600461146c565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6101846040518060400160405280600181526020017f310000000000000000000000000000000000000000000000000000000000000081525081565b6060600380546104379061149f565b80601f01602080910402602001604051908101604052809291908181526020018280546104639061149f565b80156104b05780601f10610485576101008083540402835291602001916104b0565b820191906000526020600020905b81548152906001019060200180831161049357829003601f168201915b5050505050905090565b6000336104c8818585610ab4565b5060019392505050565b6000336104e0858285610c34565b6104eb858585610cf1565b506001949350505050565b60007f0000000000000000000000000000000000000000000000000000000000000000461461052d5761052846610f56565b905090565b507f000000000000000000000000000000000000000000000000000000000000000090565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906104c89082908690610599908790611521565b610ab4565b60055460009073ffffffffffffffffffffffffffffffffffffffff1633146106325760405162461bcd60e51b8152602060048201526024808201527f546f6b656e577261707065643a3a6f6e6c794272696467653a204e4f545f425260448201527f494447450000000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b61063c838361101e565b50600192915050565b6060600480546104379061149f565b60055460009073ffffffffffffffffffffffffffffffffffffffff1633146106e35760405162461bcd60e51b8152602060048201526024808201527f546f6b656e577261707065643a3a6f6e6c794272696467653a204e4f545f425260448201527f49444745000000000000000000000000000000000000000000000000000000006064820152608401610629565b61063c8383611124565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190838110156107975760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f0000000000000000000000000000000000000000000000000000006064820152608401610629565b6104eb8286868403610ab4565b6000336104c8818585610cf1565b834211156108275760405162461bcd60e51b8152602060048201526024808201527f546f6b656e577261707065643a3a7065726d69743a204578706972656420706560448201527f726d6974000000000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff8716600090815260066020526040812080547f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918a918a918a91908661088183611539565b9091555060408051602081019690965273ffffffffffffffffffffffffffffffffffffffff94851690860152929091166060840152608083015260a082015260c0810186905260e00160405160208183030381529060405280519060200120905060006108ec6104f6565b6040517f19010000000000000000000000000000000000000000000000000000000000006020820152602281019190915260428101839052606201604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282528051602091820120600080855291840180845281905260ff89169284019290925260608301879052608083018690529092509060019060a0016020604051602081039080840390855afa1580156109b0573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811615801590610a2b57508973ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b610a9d5760405162461bcd60e51b815260206004820152602760248201527f546f6b656e577261707065643a3a7065726d69743a20496e76616c696420736960448201527f676e6174757265000000000000000000000000000000000000000000000000006064820152608401610629565b610aa88a8a8a610ab4565b50505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff8316610b3c5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff8216610bc55760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610ceb5781811015610cde5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610629565b610ceb8484848403610ab4565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610d7a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff8216610e035760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610e9f5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260208190526040808220858503905591851681529081208054849290610ee3908490611521565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610f4991815260200190565b60405180910390a3610ceb565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f610f81610428565b8051602091820120604080518082018252600181527f310000000000000000000000000000000000000000000000000000000000000090840152805192830193909352918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060820152608081018390523060a082015260c001604051602081830303815290604052805190602001209050919050565b73ffffffffffffffffffffffffffffffffffffffff82166110815760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610629565b80600260008282546110939190611521565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600090815260208190526040812080548392906110cd908490611521565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b73ffffffffffffffffffffffffffffffffffffffff82166111ad5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260208190526040902054818110156112495760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f63650000000000000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff83166000908152602081905260408120838303905560028054849290611285908490611571565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610c27565b600060208083528351808285015260005b81811015611302578581018301518582016040015282016112e6565b81811115611314576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461136c57600080fd5b919050565b6000806040838503121561138457600080fd5b61138d83611348565b946020939093013593505050565b6000806000606084860312156113b057600080fd5b6113b984611348565b92506113c760208501611348565b9150604084013590509250925092565b6000602082840312156113e957600080fd5b6113f282611348565b9392505050565b600080600080600080600060e0888a03121561141457600080fd5b61141d88611348565b965061142b60208901611348565b95506040880135945060608801359350608088013560ff8116811461144f57600080fd5b9699959850939692959460a0840135945060c09093013592915050565b6000806040838503121561147f57600080fd5b61148883611348565b915061149660208401611348565b90509250929050565b600181811c908216806114b357607f821691505b6020821081036114ec577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008219821115611534576115346114f2565b500190565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361156a5761156a6114f2565b5060010190565b600082821015611583576115836114f2565b50039056fea2646970667358221220dc9c54325b6ec8c11c8bc6a1630cfb64202b6d54611cd1004e705ceca7826a4f64736f6c634300080f0033a26469706673582212200919f5a3762d01f3cfafc4ef3510eb9345e2cfabcf15ccf729268403fdb9d61064736f6c634300080f0033", - "deployedBytecode": "0x608060405260043610620001ff5760003560e01c80637b6323c11162000117578063d02103ca11620000a1578063e7a5b4ea116200006c578063e7a5b4ea14620006de578063ed6be5c91462000703578063f2fde38b146200071a578063ff634ed7146200073f57600080fd5b8063d02103ca1462000659578063d96a15f7146200067b578063dbc169761462000692578063e737588114620006aa57600080fd5b806391e57e2d11620000e257806391e57e2d14620005bd578063a08e8a0814620005d5578063aaa13cc214620005ff578063bab161bf146200062457600080fd5b80637b6323c1146200051c57806381b1c17414620005415780638da5cb5b146200057b5780638f611519146200059b57600080fd5b80632dfdf0b511620001995780633e19704311620001645780633e19704314620003d95780634638554914620004ba5780636555954014620004df578063715018a6146200050457600080fd5b80632dfdf0b51462000315578063318aee3d146200032d5780633ae05047146200039c5780633da8168214620003b457600080fd5b80632072f6c511620001da5780632072f6c5146200027557806322e95f2c146200028d5780632b5e42e714620002cb5780632c3f58cd14620002f057600080fd5b80630871e97114620002045780630e1da6c3146200021d57806315064c961462000248575b600080fd5b6200021b6200021536600462003351565b62000756565b005b3480156200022a57600080fd5b5062000235608d5481565b6040519081526020015b60405180910390f35b3480156200025557600080fd5b50602254620002649060ff1681565b60405190151581526020016200023f565b3480156200028257600080fd5b506200021b62000812565b3480156200029a57600080fd5b50620002b2620002ac366004620033de565b620008c6565b6040516001600160a01b0390911681526020016200023f565b348015620002d857600080fd5b506200021b620002ea3660046200341a565b62000949565b348015620002fd57600080fd5b506200021b6200030f36600462003434565b62000958565b3480156200032257600080fd5b506200023560215481565b3480156200033a57600080fd5b50620003776200034c36600462003452565b608a6020526000908152604090205463ffffffff81169064010000000090046001600160a01b031682565b6040805163ffffffff90931683526001600160a01b039091166020830152016200023f565b348015620003a957600080fd5b506200023562000999565b348015620003c157600080fd5b5062000264620003d336600462003553565b62000a8c565b348015620003e657600080fd5b5062000235620003f8366004620035d1565b6040517fff0000000000000000000000000000000000000000000000000000000000000060f889901b1660208201527fffffffff0000000000000000000000000000000000000000000000000000000060e088811b821660218401526bffffffffffffffffffffffff19606089811b821660258601529188901b909216603984015285901b16603d8201526051810183905260718101829052600090609101604051602081830303815290604052805190602001209050979650505050505050565b348015620004c757600080fd5b506200021b620004d9366004620036e2565b62000b8c565b348015620004ec57600080fd5b506200021b620004fe366004620037c9565b62000e12565b3480156200051157600080fd5b506200021b62001004565b3480156200052957600080fd5b506200021b6200053b366004620036e2565b6200101a565b3480156200054e57600080fd5b50620002b2620005603660046200341a565b6089602052600090815260409020546001600160a01b031681565b3480156200058857600080fd5b506055546001600160a01b0316620002b2565b348015620005a857600080fd5b50608c54620002b2906001600160a01b031681565b348015620005ca57600080fd5b5062000235608e5481565b348015620005e257600080fd5b50620005ec600081565b60405160ff90911681526020016200023f565b3480156200060c57600080fd5b50620002b26200061e3660046200381f565b620015dc565b3480156200063157600080fd5b50608754620006439063ffffffff1681565b60405163ffffffff90911681526020016200023f565b3480156200066657600080fd5b50608b54620002b2906001600160a01b031681565b6200021b6200068c366004620038d3565b62001748565b3480156200069f57600080fd5b506200021b620019fc565b348015620006b757600080fd5b5062000264620006c93660046200341a565b60886020526000908152604090205460ff1681565b348015620006eb57600080fd5b506200021b620006fd3660046200341a565b62001aae565b3480156200071057600080fd5b5062000643600081565b3480156200072757600080fd5b506200021b6200073936600462003452565b62001af3565b3480156200074c57600080fd5b50620005ec600181565b608e54341115620007fa5760405162461bcd60e51b815260206004820152604a60248201527f4272696467653a3a6272696467653a2043616e6e6f7420627269646765206d6f60448201527f7265207468616e206d6178457468657242726964676520696e20696e7465726e60648201527f616c20746573746e657400000000000000000000000000000000000000000000608482015260a4015b60405180910390fd5b6200080a86868686868662001b89565b505050505050565b608c546001600160a01b03163314620008ba5760405162461bcd60e51b815260206004820152604b60248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7950726f6f664f66456660448201527f66696369656e63793a206f6e6c792050726f6f66206f6620456666696369656e60648201527f637920636f6e7472616374000000000000000000000000000000000000000000608482015260a401620007f1565b620008c46200212f565b565b6040805160e084901b7fffffffff0000000000000000000000000000000000000000000000000000000016602080830191909152606084901b6bffffffffffffffffffffffff1916602483015282516018818403018152603890920183528151918101919091206000908152608990915220546001600160a01b03165b92915050565b6200095362002208565b608e55565b6200096262002208565b608780547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001663ffffffff92909216919091179055565b602154600090819081805b602081101562000a83578260011660010362000a045760018160208110620009d057620009d06200393b565b0154604080516020810192909252810185905260600160405160208183030381529060405280519060200120935062000a31565b60408051602081018690529081018390526060016040516020818303038152906040528051906020012093505b62000a3e60028462003999565b6040805160208101859052908101849052909350606001604051602081830303815290604052805190602001209150808062000a7a90620039d5565b915050620009a4565b50919392505050565b60008467ffffffffffffffff8416825b602081101562000b7f578160011660010362000b095786818151811062000ac75762000ac76200393b565b60200260200101518360405160200162000aeb929190918252602082015260400190565b60405160208183030381529060405280519060200120925062000b5b565b8287828151811062000b1f5762000b1f6200393b565b602002602001015160405160200162000b42929190918252602082015260400190565b6040516020818303038152906040528051906020012092505b62000b6860028362003999565b91508062000b7681620039d5565b91505062000a9c565b5050909114949350505050565b60225460ff161562000c2d5760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a401620007f1565b62000c438a8a8a8a8a8a8a8a8a8a600162002264565b63ffffffff8916600090815260886020526040808220805460ff19166001179055516001600160a01b03851690849062000c869089908b90879060240162003a6d565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1806b5f2000000000000000000000000000000000000000000000000000000001790525162000ceb919062003aa6565b60006040518083038185875af1925050503d806000811462000d2a576040519150601f19603f3d011682016040523d82523d6000602084013e62000d2f565b606091505b505090508062000da75760405162461bcd60e51b8152602060048201526024808201527f4272696467653a3a636c61696d4d6573736167653a204d4553534147455f464160448201527f494c4544000000000000000000000000000000000000000000000000000000006064820152608401620007f1565b6040805163ffffffff8c81168252891660208201526001600160a01b0388811682840152861660608201526080810185905290517f25308c93ceeed162da955b3f7ce3e3f93606579e40fb92029faa9efe275459839181900360a00190a15050505050505050505050565b600054610100900460ff161580801562000e335750600054600160ff909116105b8062000e4f5750303b15801562000e4f575060005460ff166001145b62000ec35760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401620007f1565b6000805460ff19166001179055801562000f0457600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6087805463ffffffff87167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000909116179055608b80546001600160a01b038087167fffffffffffffffffffffffff000000000000000000000000000000000000000092831617909255608c805492861692909116919091179055608d8290556703782dace9d90000608e5562000f99620025f1565b801562000ffd57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b6200100e62002208565b620008c4600062002676565b60225460ff1615620010bb5760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a401620007f1565b620010d18a8a8a8a8a8a8a8a8a8a600062002264565b63ffffffff89166000908152608860205260409020805460ff191660011790556001600160a01b038516620011f057604080516000808252602082019092526001600160a01b0385169084906040516200112c919062003aa6565b60006040518083038185875af1925050503d80600081146200116b576040519150601f19603f3d011682016040523d82523d6000602084013e62001170565b606091505b5050905080620011e95760405162461bcd60e51b815260206004820152602760248201527f4272696467653a3a636c61696d41737365743a204554485f5452414e5346455260448201527f5f4641494c4544000000000000000000000000000000000000000000000000006064820152608401620007f1565b5062001572565b60875463ffffffff9081169087160362001220576200121a6001600160a01b0386168484620026e0565b62001572565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e088901b1660208201526bffffffffffffffffffffffff19606087901b16602482015260009060380160408051601f198184030181529181528151602092830120600081815260899093529120549091506001600160a01b031680620014de57600080600085806020019051810190620012c0919062003b18565b925092509250600085848484604051620012da90620032ba565b620012e89392919062003b99565b8190604051809103906000f590508015801562001309573d6000803e3d6000fd5b506040517f40c10f190000000000000000000000000000000000000000000000000000000081526001600160a01b038b81166004830152602482018b9052919250908216906340c10f19906044016020604051808303816000875af115801562001377573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200139d919062003be5565b50806089600088815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060405180604001604052808d63ffffffff1681526020018c6001600160a01b0316815250608a6000836001600160a01b03166001600160a01b0316815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a8154816001600160a01b0302191690836001600160a01b031602179055509050507fccd7715648d1f2bb13e158f96b5b6c3aeda555d4cb87112e274a6f28bc571d598c8c83604051620014cc9392919063ffffffff9390931683526001600160a01b03918216602084015216604082015260600190565b60405180910390a1505050506200156f565b6040517f40c10f190000000000000000000000000000000000000000000000000000000081526001600160a01b038681166004830152602482018690528216906340c10f19906044016020604051808303816000875af115801562001547573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200156d919062003be5565b505b50505b6040805163ffffffff8b81168252881660208201526001600160a01b0387811682840152851660608201526080810184905290517f25308c93ceeed162da955b3f7ce3e3f93606579e40fb92029faa9efe275459839181900360a00190a150505050505050505050565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e089901b1660208201526bffffffffffffffffffffffff19606088901b1660248201526000908190603801604051602081830303815290604052805190602001209050600060ff60f81b3083604051806020016200165f90620032ba565b601f1982820381018352601f9091011660408190526200168c908d908d908d908d908d9060200162003c30565b60408051601f1981840301815290829052620016ac929160200162003c71565b604051602081830303815290604052805190602001206040516020016200172294939291907fff0000000000000000000000000000000000000000000000000000000000000094909416845260609290921b6bffffffffffffffffffffffff191660018401526015830152603582015260550190565b60408051808303601f1901815291905280516020909101209a9950505050505050505050565b60225460ff1615620017e95760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a401620007f1565b60875463ffffffff908116908416036200186c5760405162461bcd60e51b815260206004820152602a60248201527f4272696467653a3a6272696467653a2044455354494e4154494f4e5f43414e5460448201527f5f42455f495453454c46000000000000000000000000000000000000000000006064820152608401620007f1565b6087546021546040517f501781209a1f8899323b96b4ef08b168df93e0a90c673d1e4cce39366cb62f9b92620018b99260019263ffffffff9092169133918991899134918a919062003ca4565b60405180910390a16087548151602080840191909120604080517f0100000000000000000000000000000000000000000000000000000000000000818501527fffffffff0000000000000000000000000000000000000000000000000000000060e095861b811660218301526bffffffffffffffffffffffff1933606090811b82166025850152968a901b90911660398301529487901b909416603d8501523460518501526071808501929092528051808503909201825260919093019092528151910120620019899062002790565b608b546001600160a01b03166333d6247d620019a462000999565b6040518263ffffffff1660e01b8152600401620019c391815260200190565b600060405180830381600087803b158015620019de57600080fd5b505af1158015620019f3573d6000803e3d6000fd5b50505050505050565b608c546001600160a01b0316331462001aa45760405162461bcd60e51b815260206004820152604b60248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7950726f6f664f66456660448201527f66696369656e63793a206f6e6c792050726f6f66206f6620456666696369656e60648201527f637920636f6e7472616374000000000000000000000000000000000000000000608482015260a401620007f1565b620008c4620028ef565b62001ab862002208565b608d8190556040518181527f126d6a8888996898896a660f1c9a7a4ef612bd6df82281a13079dd27cc38758d9060200160405180910390a150565b62001afd62002208565b6001600160a01b03811662001b7b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401620007f1565b62001b868162002676565b50565b60225460ff161562001c2a5760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a401620007f1565b60875463ffffffff9081169086160362001cad5760405162461bcd60e51b815260206004820152602a60248201527f4272696467653a3a6272696467653a2044455354494e4154494f4e5f43414e5460448201527f5f42455f495453454c46000000000000000000000000000000000000000000006064820152608401620007f1565b60008060606001600160a01b03891662001d425785341462001d385760405162461bcd60e51b815260206004820152602f60248201527f4272696467653a3a6272696467653a20414d4f554e545f444f45535f4e4f545f60448201527f4d415443485f4d53475f56414c554500000000000000000000000000000000006064820152608401620007f1565b6000915062001fcc565b6001600160a01b03808a166000908152608a602090815260409182902082518084019093525463ffffffff811683526401000000009004909216918101829052901562001e29576040517f9dc29fac000000000000000000000000000000000000000000000000000000008152336004820152602481018890526001600160a01b038b1690639dc29fac906044016020604051808303816000875af115801562001df0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001e16919062003be5565b5060208101518151909450925062001fca565b841562001e3e5762001e3e8a8888886200299e565b62001e556001600160a01b038b1633308a62002fc3565b899350608760009054906101000a900463ffffffff169250896001600160a01b03166306fdde036040518163ffffffff1660e01b8152600401600060405180830381865afa15801562001eac573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001ed6919081019062003d10565b8a6001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa15801562001f15573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001f3f919081019062003d10565b8b6001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001f7e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001fa4919062003d49565b60405160200162001fb89392919062003b99565b60405160208183030381529060405291505b505b7f501781209a1f8899323b96b4ef08b168df93e0a90c673d1e4cce39366cb62f9b600083858b8b8b876021546040516200200e98979695949392919062003ca4565b60405180910390a18051602080830191909120604080516000818501527fffffffff0000000000000000000000000000000000000000000000000000000060e087811b821660218401526bffffffffffffffffffffffff1960608a811b82166025860152918f901b90921660398401528c901b16603d820152605181018a90526071808201939093528151808203909301835260910190528051910120620020b69062002790565b608b546001600160a01b03166333d6247d620020d162000999565b6040518263ffffffff1660e01b8152600401620020f091815260200190565b600060405180830381600087803b1580156200210b57600080fd5b505af115801562002120573d6000803e3d6000fd5b50505050505050505050505050565b60225460ff1615620021d05760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a401620007f1565b6022805460ff191660011790556040517f2261efe5aef6fedc1fd1550b25facc9181745623049c7901287030b9ad1a549790600090a1565b6055546001600160a01b03163314620008c45760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401620007f1565b63ffffffff8a1660009081526088602052604090205460ff1615620022f15760405162461bcd60e51b8152602060048201526024808201527f4272696467653a3a5f7665726966794c6561663a20414c52454144595f434c4160448201527f494d4544000000000000000000000000000000000000000000000000000000006064820152608401620007f1565b608b546040805160208082018d90528183018c9052825180830384018152606083019384905280519101207f257b36320000000000000000000000000000000000000000000000000000000090925260648101919091526000916001600160a01b03169063257b3632906084016020604051808303816000875af11580156200237e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620023a4919062003d69565b90508015801590620023c35750608d54620023c0824262003d83565b10155b620024375760405162461bcd60e51b815260206004820152602d60248201527f4272696467653a3a5f7665726966794c6561663a20474c4f42414c5f4558495460448201527f5f524f4f545f494e56414c4944000000000000000000000000000000000000006064820152608401620007f1565b60875463ffffffff878116911614620024b95760405162461bcd60e51b815260206004820152603760248201527f4272696467653a3a5f7665726966794c6561663a2044455354494e4154494f4e60448201527f5f4e4554574f524b5f444f45535f4e4f545f4d415443480000000000000000006064820152608401620007f1565b60875460009063ffffffff16620024d2575088620024d5565b50895b8351602080860191909120604080517fff0000000000000000000000000000000000000000000000000000000000000060f888901b16818501527fffffffff0000000000000000000000000000000000000000000000000000000060e08e811b821660218401526bffffffffffffffffffffffff1960608f811b82166025860152918e901b90921660398401528b901b16603d820152605181018990526071808201939093528151808203909301835260910190528051910120620025a3908e8e63ffffffff168462000a8c565b620021205760405162461bcd60e51b815260206004820181905260248201527f4272696467653a3a5f7665726966794c6561663a20534d545f494e56414c49446044820152606401620007f1565b600054610100900460ff16620026705760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401620007f1565b620008c4335b605580546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6040516001600160a01b0383166024820152604481018290526200278b9084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526200301c565b505050565b806001620027a16020600262003ed6565b620027ad919062003d83565b60215410620028255760405162461bcd60e51b815260206004820152602a60248201527f4465706f736974436f6e74726163743a5f6465706f7369743a204d45524b4c4560448201527f5f545245455f46554c4c000000000000000000000000000000000000000000006064820152608401620007f1565b6001602160008282546200283a919062003ee4565b909155505060215460005b6020811015620028e457816001166001036200287a5782600182602081106200287257620028726200393b565b015550505050565b600181602081106200289057620028906200393b565b01546040805160208101929092528101849052606001604051602081830303815290604052805190602001209250600282620028cd919062003999565b915080620028db81620039d5565b91505062002845565b506200278b62003eff565b60225460ff16620029695760405162461bcd60e51b815260206004820152603b60248201527f456d657267656e63794d616e616765723a3a6966456d657267656e637953746160448201527f74653a206f6e6c7920696620656d657267656e637920737461746500000000006064820152608401620007f1565b6022805460ff191690556040517f1e5e34eea33501aecf2ebec9fe0e884a40804275ea7fe10b2ba084c8374308b390600090a1565b6000620029e183838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506200310892505050565b90507f2afa5331000000000000000000000000000000000000000000000000000000007fffffffff0000000000000000000000000000000000000000000000000000000082160162002ce357600080808080808062002a44896004818d62003f2e565b81019062002a53919062003f5a565b9650965096509650965096509650336001600160a01b0316876001600160a01b03161462002aea5760405162461bcd60e51b815260206004820152603060248201527f4272696467653a3a5f7065726d69743a205045524d49545f4f574e45525f4d5560448201527f53545f42455f5448455f53454e444552000000000000000000000000000000006064820152608401620007f1565b6001600160a01b038616301462002b6a5760405162461bcd60e51b815260206004820152602560248201527f4272696467653a3a5f7065726d69743a205350454e4445525f4d5553545f424560448201527f5f544849530000000000000000000000000000000000000000000000000000006064820152608401620007f1565b8a851462002be15760405162461bcd60e51b815260206004820152602d60248201527f4272696467653a3a5f7065726d69743a205045524d49545f414d4f554e545f4460448201527f4f45535f4e4f545f4d41544348000000000000000000000000000000000000006064820152608401620007f1565b604080516001600160a01b0389811660248301528881166044830152606482018890526084820187905260ff861660a483015260c4820185905260e48083018590528351808403909101815261010490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fd505accf000000000000000000000000000000000000000000000000000000001790529151918e169162002c8f919062003aa6565b6000604051808303816000865af19150503d806000811462002cce576040519150601f19603f3d011682016040523d82523d6000602084013e62002cd3565b606091505b5050505050505050505062000ffd565b7fffffffff0000000000000000000000000000000000000000000000000000000081167f8fcbaf0c000000000000000000000000000000000000000000000000000000001462002d765760405162461bcd60e51b815260206004820152601f60248201527f4272696467653a3a5f7065726d69743a204e4f545f56414c49445f43414c4c006044820152606401620007f1565b60008080808080808062002d8e8a6004818e62003f2e565b81019062002d9d919062003fb5565b97509750975097509750975097509750336001600160a01b0316886001600160a01b03161462002e365760405162461bcd60e51b815260206004820152603060248201527f4272696467653a3a5f7065726d69743a205045524d49545f4f574e45525f4d5560448201527f53545f42455f5448455f53454e444552000000000000000000000000000000006064820152608401620007f1565b6001600160a01b038716301462002eb65760405162461bcd60e51b815260206004820152602560248201527f4272696467653a3a5f7065726d69743a205350454e4445525f4d5553545f424560448201527f5f544849530000000000000000000000000000000000000000000000000000006064820152608401620007f1565b604080516001600160a01b038a811660248301528981166044830152606482018990526084820188905286151560a483015260ff861660c483015260e482018590526101048083018590528351808403909101815261012490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f8fcbaf0c000000000000000000000000000000000000000000000000000000001790529151918f169162002f6d919062003aa6565b6000604051808303816000865af19150503d806000811462002fac576040519150601f19603f3d011682016040523d82523d6000602084013e62002fb1565b606091505b50505050505050505050505050505050565b6040516001600160a01b0380851660248301528316604482015260648101829052620030169085907f23b872dd000000000000000000000000000000000000000000000000000000009060840162002726565b50505050565b600062003073826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166200310f9092919063ffffffff16565b8051909150156200278b578080602001905181019062003094919062003be5565b6200278b5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401620007f1565b6020015190565b60606200312084846000856200312a565b90505b9392505050565b606082471015620031a45760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401620007f1565b6001600160a01b0385163b620031fd5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401620007f1565b600080866001600160a01b031685876040516200321b919062003aa6565b60006040518083038185875af1925050503d80600081146200325a576040519150601f19603f3d011682016040523d82523d6000602084013e6200325f565b606091505b5091509150620032718282866200327c565b979650505050505050565b606083156200328d57508162003123565b8251156200329e5782518084602001fd5b8160405162461bcd60e51b8152600401620007f1919062004041565b611a78806200405783390190565b6001600160a01b038116811462001b8657600080fd5b8035620032eb81620032c8565b919050565b803563ffffffff81168114620032eb57600080fd5b60008083601f8401126200331857600080fd5b50813567ffffffffffffffff8111156200333157600080fd5b6020830191508360208285010111156200334a57600080fd5b9250929050565b60008060008060008060a087890312156200336b57600080fd5b86356200337881620032c8565b95506200338860208801620032f0565b945060408701356200339a81620032c8565b935060608701359250608087013567ffffffffffffffff811115620033be57600080fd5b620033cc89828a0162003305565b979a9699509497509295939492505050565b60008060408385031215620033f257600080fd5b620033fd83620032f0565b915060208301356200340f81620032c8565b809150509250929050565b6000602082840312156200342d57600080fd5b5035919050565b6000602082840312156200344757600080fd5b6200312382620032f0565b6000602082840312156200346557600080fd5b81356200312381620032c8565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715620034cd57620034cd62003472565b604052919050565b600082601f830112620034e757600080fd5b8135602067ffffffffffffffff82111562003506576200350662003472565b8160051b62003517828201620034a1565b92835284810182019282810190878511156200353257600080fd5b83870192505b84831015620032715782358252918301919083019062003538565b600080600080608085870312156200356a57600080fd5b84359350602085013567ffffffffffffffff808211156200358a57600080fd5b6200359888838901620034d5565b9450604087013591508082168214620035b057600080fd5b509396929550929360600135925050565b60ff8116811462001b8657600080fd5b600080600080600080600060e0888a031215620035ed57600080fd5b8735620035fa81620035c1565b96506200360a60208901620032f0565b955060408801356200361c81620032c8565b94506200362c60608901620032f0565b935060808801356200363e81620032c8565b9699959850939692959460a0840135945060c09093013592915050565b600067ffffffffffffffff82111562003678576200367862003472565b50601f01601f191660200190565b600082601f8301126200369857600080fd5b8135620036af620036a9826200365b565b620034a1565b818152846020838601011115620036c557600080fd5b816020850160208301376000918101602001919091529392505050565b6000806000806000806000806000806101408b8d0312156200370357600080fd5b8a3567ffffffffffffffff808211156200371c57600080fd5b6200372a8e838f01620034d5565b9b506200373a60208e01620032f0565b9a5060408d0135995060608d013598506200375860808e01620032f0565b97506200376860a08e01620032de565b96506200377860c08e01620032f0565b95506200378860e08e01620032de565b94506101008d013593506101208d0135915080821115620037a857600080fd5b50620037b78d828e0162003686565b9150509295989b9194979a5092959850565b60008060008060808587031215620037e057600080fd5b620037eb85620032f0565b93506020850135620037fd81620032c8565b925060408501356200380f81620032c8565b9396929550929360600135925050565b600080600080600080600060a0888a0312156200383b57600080fd5b6200384688620032f0565b965060208801356200385881620032c8565b9550604088013567ffffffffffffffff808211156200387657600080fd5b620038848b838c0162003305565b909750955060608a01359150808211156200389e57600080fd5b50620038ad8a828b0162003305565b9094509250506080880135620038c381620035c1565b8091505092959891949750929550565b600080600060608486031215620038e957600080fd5b620038f484620032f0565b925060208401356200390681620032c8565b9150604084013567ffffffffffffffff8111156200392357600080fd5b620039318682870162003686565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082620039d0577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820362003a095762003a096200396a565b5060010190565b60005b8381101562003a2d57818101518382015260200162003a13565b83811115620030165750506000910152565b6000815180845262003a5981602086016020860162003a10565b601f01601f19169290920160200192915050565b6001600160a01b038416815263ffffffff8316602082015260606040820152600062003a9d606083018462003a3f565b95945050505050565b6000825162003aba81846020870162003a10565b9190910192915050565b600082601f83011262003ad657600080fd5b815162003ae7620036a9826200365b565b81815284602083860101111562003afd57600080fd5b62003b1082602083016020870162003a10565b949350505050565b60008060006060848603121562003b2e57600080fd5b835167ffffffffffffffff8082111562003b4757600080fd5b62003b558783880162003ac4565b9450602086015191508082111562003b6c57600080fd5b5062003b7b8682870162003ac4565b925050604084015162003b8e81620035c1565b809150509250925092565b60608152600062003bae606083018662003a3f565b828103602084015262003bc2818662003a3f565b91505060ff83166040830152949350505050565b801515811462001b8657600080fd5b60006020828403121562003bf857600080fd5b8151620031238162003bd6565b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b60608152600062003c4660608301878962003c05565b828103602084015262003c5b81868862003c05565b91505060ff831660408301529695505050505050565b6000835162003c8581846020880162003a10565b83519083019062003c9b81836020880162003a10565b01949350505050565b600061010060ff8b16835263ffffffff808b1660208501526001600160a01b03808b166040860152818a1660608601528089166080860152508660a08501528160c085015262003cf78285018762003a3f565b925080851660e085015250509998505050505050505050565b60006020828403121562003d2357600080fd5b815167ffffffffffffffff81111562003d3b57600080fd5b62003b108482850162003ac4565b60006020828403121562003d5c57600080fd5b81516200312381620035c1565b60006020828403121562003d7c57600080fd5b5051919050565b60008282101562003d985762003d986200396a565b500390565b600181815b8085111562003dfc57817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111562003de05762003de06200396a565b8085161562003dee57918102915b93841c939080029062003da2565b509250929050565b60008262003e155750600162000943565b8162003e245750600062000943565b816001811462003e3d576002811462003e485762003e68565b600191505062000943565b60ff84111562003e5c5762003e5c6200396a565b50506001821b62000943565b5060208310610133831016604e8410600b841016171562003e8d575081810a62000943565b62003e99838362003d9d565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111562003ece5762003ece6200396a565b029392505050565b600062003123838362003e04565b6000821982111562003efa5762003efa6200396a565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b6000808585111562003f3f57600080fd5b8386111562003f4d57600080fd5b5050820193919092039150565b600080600080600080600060e0888a03121562003f7657600080fd5b873562003f8381620032c8565b9650602088013562003f9581620032c8565b9550604088013594506060880135935060808801356200363e81620035c1565b600080600080600080600080610100898b03121562003fd357600080fd5b883562003fe081620032c8565b9750602089013562003ff281620032c8565b965060408901359550606089013594506080890135620040128162003bd6565b935060a08901356200402481620035c1565b979a969950949793969295929450505060c08201359160e0013590565b60208152600062003123602083018462003a3f56fe60c06040523480156200001157600080fd5b5060405162001a7838038062001a788339810160408190526200003491620002ad565b82826003620000448382620003c1565b506004620000538282620003c1565b5050600580546001600160a81b0319163360ff60a01b191617600160a01b60ff851602179055504660808190526200008b9062000098565b60a052506200048d915050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f620000c562000146565b805160209182012060408051808201825260018152603160f81b90840152805192830193909352918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060820152608081018390523060a082015260c001604051602081830303815290604052805190602001209050919050565b606060038054620001579062000332565b80601f0160208091040260200160405190810160405280929190818152602001828054620001859062000332565b8015620001d65780601f10620001aa57610100808354040283529160200191620001d6565b820191906000526020600020905b815481529060010190602001808311620001b857829003601f168201915b5050505050905090565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200020857600080fd5b81516001600160401b0380821115620002255762000225620001e0565b604051601f8301601f19908116603f01168101908282118183101715620002505762000250620001e0565b816040528381526020925086838588010111156200026d57600080fd5b600091505b8382101562000291578582018301518183018401529082019062000272565b83821115620002a35760008385830101525b9695505050505050565b600080600060608486031215620002c357600080fd5b83516001600160401b0380821115620002db57600080fd5b620002e987838801620001f6565b945060208601519150808211156200030057600080fd5b506200030f86828701620001f6565b925050604084015160ff811681146200032757600080fd5b809150509250925092565b600181811c908216806200034757607f821691505b6020821081036200036857634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620003bc57600081815260208120601f850160051c81016020861015620003975750805b601f850160051c820191505b81811015620003b857828155600101620003a3565b5050505b505050565b81516001600160401b03811115620003dd57620003dd620001e0565b620003f581620003ee845462000332565b846200036e565b602080601f8311600181146200042d5760008415620004145750858301515b600019600386901b1c1916600185901b178555620003b8565b600085815260208120601f198616915b828110156200045e578886015182559484019460019091019084016200043d565b50858210156200047d5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60805160a0516115be620004ba600039600061053001526000818161036f01526104fa01526115be6000f3fe608060405234801561001057600080fd5b50600436106101775760003560e01c806370a08231116100d8578063a457c2d71161008c578063d505accf11610066578063d505accf14610391578063dd62ed3e146103a6578063ffa1ad74146103ec57600080fd5b8063a457c2d714610344578063a9059cbb14610357578063cd0d00961461036a57600080fd5b806395d89b41116100bd57806395d89b41146102e45780639dc29fac146102ec578063a3c573eb146102ff57600080fd5b806370a082311461028e5780637ecebe00146102c457600080fd5b806330adf81f1161012f5780633644e515116101145780633644e51514610260578063395093511461026857806340c10f191461027b57600080fd5b806330adf81f14610209578063313ce5671461023057600080fd5b806318160ddd1161016057806318160ddd146101bd57806320606b70146101cf57806323b872dd146101f657600080fd5b806306fdde031461017c578063095ea7b31461019a575b600080fd5b610184610428565b60405161019191906112d5565b60405180910390f35b6101ad6101a8366004611371565b6104ba565b6040519015158152602001610191565b6002545b604051908152602001610191565b6101c17f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81565b6101ad61020436600461139b565b6104d2565b6101c17f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b60055474010000000000000000000000000000000000000000900460ff1660405160ff9091168152602001610191565b6101c16104f6565b6101ad610276366004611371565b610552565b6101ad610289366004611371565b61059e565b6101c161029c3660046113d7565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6101c16102d23660046113d7565b60066020526000908152604090205481565b610184610645565b6101ad6102fa366004611371565b610654565b60055461031f9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610191565b6101ad610352366004611371565b6106ed565b6101ad610365366004611371565b6107a4565b6101c17f000000000000000000000000000000000000000000000000000000000000000081565b6103a461039f3660046113f9565b6107b2565b005b6101c16103b436600461146c565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6101846040518060400160405280600181526020017f310000000000000000000000000000000000000000000000000000000000000081525081565b6060600380546104379061149f565b80601f01602080910402602001604051908101604052809291908181526020018280546104639061149f565b80156104b05780601f10610485576101008083540402835291602001916104b0565b820191906000526020600020905b81548152906001019060200180831161049357829003601f168201915b5050505050905090565b6000336104c8818585610ab4565b5060019392505050565b6000336104e0858285610c34565b6104eb858585610cf1565b506001949350505050565b60007f0000000000000000000000000000000000000000000000000000000000000000461461052d5761052846610f56565b905090565b507f000000000000000000000000000000000000000000000000000000000000000090565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906104c89082908690610599908790611521565b610ab4565b60055460009073ffffffffffffffffffffffffffffffffffffffff1633146106325760405162461bcd60e51b8152602060048201526024808201527f546f6b656e577261707065643a3a6f6e6c794272696467653a204e4f545f425260448201527f494447450000000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b61063c838361101e565b50600192915050565b6060600480546104379061149f565b60055460009073ffffffffffffffffffffffffffffffffffffffff1633146106e35760405162461bcd60e51b8152602060048201526024808201527f546f6b656e577261707065643a3a6f6e6c794272696467653a204e4f545f425260448201527f49444745000000000000000000000000000000000000000000000000000000006064820152608401610629565b61063c8383611124565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190838110156107975760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f0000000000000000000000000000000000000000000000000000006064820152608401610629565b6104eb8286868403610ab4565b6000336104c8818585610cf1565b834211156108275760405162461bcd60e51b8152602060048201526024808201527f546f6b656e577261707065643a3a7065726d69743a204578706972656420706560448201527f726d6974000000000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff8716600090815260066020526040812080547f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918a918a918a91908661088183611539565b9091555060408051602081019690965273ffffffffffffffffffffffffffffffffffffffff94851690860152929091166060840152608083015260a082015260c0810186905260e00160405160208183030381529060405280519060200120905060006108ec6104f6565b6040517f19010000000000000000000000000000000000000000000000000000000000006020820152602281019190915260428101839052606201604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282528051602091820120600080855291840180845281905260ff89169284019290925260608301879052608083018690529092509060019060a0016020604051602081039080840390855afa1580156109b0573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811615801590610a2b57508973ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b610a9d5760405162461bcd60e51b815260206004820152602760248201527f546f6b656e577261707065643a3a7065726d69743a20496e76616c696420736960448201527f676e6174757265000000000000000000000000000000000000000000000000006064820152608401610629565b610aa88a8a8a610ab4565b50505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff8316610b3c5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff8216610bc55760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610ceb5781811015610cde5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610629565b610ceb8484848403610ab4565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610d7a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff8216610e035760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610e9f5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260208190526040808220858503905591851681529081208054849290610ee3908490611521565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610f4991815260200190565b60405180910390a3610ceb565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f610f81610428565b8051602091820120604080518082018252600181527f310000000000000000000000000000000000000000000000000000000000000090840152805192830193909352918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060820152608081018390523060a082015260c001604051602081830303815290604052805190602001209050919050565b73ffffffffffffffffffffffffffffffffffffffff82166110815760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610629565b80600260008282546110939190611521565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600090815260208190526040812080548392906110cd908490611521565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b73ffffffffffffffffffffffffffffffffffffffff82166111ad5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260208190526040902054818110156112495760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f63650000000000000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff83166000908152602081905260408120838303905560028054849290611285908490611571565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610c27565b600060208083528351808285015260005b81811015611302578581018301518582016040015282016112e6565b81811115611314576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461136c57600080fd5b919050565b6000806040838503121561138457600080fd5b61138d83611348565b946020939093013593505050565b6000806000606084860312156113b057600080fd5b6113b984611348565b92506113c760208501611348565b9150604084013590509250925092565b6000602082840312156113e957600080fd5b6113f282611348565b9392505050565b600080600080600080600060e0888a03121561141457600080fd5b61141d88611348565b965061142b60208901611348565b95506040880135945060608801359350608088013560ff8116811461144f57600080fd5b9699959850939692959460a0840135945060c09093013592915050565b6000806040838503121561147f57600080fd5b61148883611348565b915061149660208401611348565b90509250929050565b600181811c908216806114b357607f821691505b6020821081036114ec577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008219821115611534576115346114f2565b500190565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361156a5761156a6114f2565b5060010190565b600082821015611583576115836114f2565b50039056fea2646970667358221220dc9c54325b6ec8c11c8bc6a1630cfb64202b6d54611cd1004e705ceca7826a4f64736f6c634300080f0033a26469706673582212200919f5a3762d01f3cfafc4ef3510eb9345e2cfabcf15ccf729268403fdb9d61064736f6c634300080f0033", + "bytecode": "0x608060405234801561001057600080fd5b506159dc806100206000396000f3fe608060405260043610620001ff5760003560e01c80637b6323c11162000117578063d02103ca11620000a1578063e7a5b4ea116200006c578063e7a5b4ea14620006de578063ed6be5c91462000703578063f2fde38b146200071a578063ff634ed7146200073f57600080fd5b8063d02103ca1462000659578063d96a15f7146200067b578063dbc169761462000692578063e737588114620006aa57600080fd5b806391e57e2d11620000e257806391e57e2d14620005bd578063a08e8a0814620005d5578063aaa13cc214620005ff578063bab161bf146200062457600080fd5b80637b6323c1146200051c57806381b1c17414620005415780638da5cb5b146200057b5780638f611519146200059b57600080fd5b80632dfdf0b511620001995780633e19704311620001645780633e19704314620003d95780634638554914620004ba5780636555954014620004df578063715018a6146200050457600080fd5b80632dfdf0b51462000315578063318aee3d146200032d5780633ae05047146200039c5780633da8168214620003b457600080fd5b80632072f6c511620001da5780632072f6c5146200027557806322e95f2c146200028d5780632b5e42e714620002cb5780632c3f58cd14620002f057600080fd5b80630871e97114620002045780630e1da6c3146200021d57806315064c961462000248575b600080fd5b6200021b62000215366004620032db565b62000756565b005b3480156200022a57600080fd5b5062000235608d5481565b6040519081526020015b60405180910390f35b3480156200025557600080fd5b50602254620002649060ff1681565b60405190151581526020016200023f565b3480156200028257600080fd5b506200021b62000812565b3480156200029a57600080fd5b50620002b2620002ac36600462003368565b620008c6565b6040516001600160a01b0390911681526020016200023f565b348015620002d857600080fd5b506200021b620002ea366004620033a4565b62000949565b348015620002fd57600080fd5b506200021b6200030f366004620033be565b62000958565b3480156200032257600080fd5b506200023560215481565b3480156200033a57600080fd5b50620003776200034c366004620033e3565b608a6020526000908152604090205463ffffffff81169064010000000090046001600160a01b031682565b6040805163ffffffff90931683526001600160a01b039091166020830152016200023f565b348015620003a957600080fd5b506200023562000999565b348015620003c157600080fd5b5062000264620003d3366004620034e4565b62000a8c565b348015620003e657600080fd5b5062000235620003f836600462003562565b6040517fff0000000000000000000000000000000000000000000000000000000000000060f889901b1660208201527fffffffff0000000000000000000000000000000000000000000000000000000060e088811b821660218401526bffffffffffffffffffffffff19606089811b821660258601529188901b909216603984015285901b16603d8201526051810183905260718101829052600090609101604051602081830303815290604052805190602001209050979650505050505050565b348015620004c757600080fd5b506200021b620004d936600462003673565b62000b8e565b348015620004ec57600080fd5b506200021b620004fe3660046200375a565b62000e14565b3480156200051157600080fd5b506200021b62001006565b3480156200052957600080fd5b506200021b6200053b36600462003673565b6200101c565b3480156200054e57600080fd5b50620002b262000560366004620033a4565b6089602052600090815260409020546001600160a01b031681565b3480156200058857600080fd5b506055546001600160a01b0316620002b2565b348015620005a857600080fd5b50608c54620002b2906001600160a01b031681565b348015620005ca57600080fd5b5062000235608e5481565b348015620005e257600080fd5b50620005ec600081565b60405160ff90911681526020016200023f565b3480156200060c57600080fd5b50620002b26200061e366004620037b0565b620015de565b3480156200063157600080fd5b50608754620006439063ffffffff1681565b60405163ffffffff90911681526020016200023f565b3480156200066657600080fd5b50608b54620002b2906001600160a01b031681565b6200021b6200068c36600462003864565b6200174a565b3480156200069f57600080fd5b506200021b620019fe565b348015620006b757600080fd5b5062000264620006c9366004620033a4565b60886020526000908152604090205460ff1681565b348015620006eb57600080fd5b506200021b620006fd366004620033a4565b62001ab0565b3480156200071057600080fd5b5062000643600081565b3480156200072757600080fd5b506200021b62000739366004620033e3565b62001af5565b3480156200074c57600080fd5b50620005ec600181565b608e54341115620007fa5760405162461bcd60e51b815260206004820152604a60248201527f4272696467653a3a6272696467653a2043616e6e6f7420627269646765206d6f60448201527f7265207468616e206d6178457468657242726964676520696e20696e7465726e60648201527f616c20746573746e657400000000000000000000000000000000000000000000608482015260a4015b60405180910390fd5b6200080a86868686868662001b8b565b505050505050565b608c546001600160a01b03163314620008ba5760405162461bcd60e51b815260206004820152604b60248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7950726f6f664f66456660448201527f66696369656e63793a206f6e6c792050726f6f66206f6620456666696369656e60648201527f637920636f6e7472616374000000000000000000000000000000000000000000608482015260a401620007f1565b620008c462002131565b565b6040805160e084901b7fffffffff0000000000000000000000000000000000000000000000000000000016602080830191909152606084901b6bffffffffffffffffffffffff1916602483015282516018818403018152603890920183528151918101919091206000908152608990915220546001600160a01b03165b92915050565b620009536200220a565b608e55565b620009626200220a565b608780547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001663ffffffff92909216919091179055565b602154600090819081805b602081101562000a83578260011660010362000a045760018160208110620009d057620009d0620038cc565b0154604080516020810192909252810185905260600160405160208183030381529060405280519060200120935062000a31565b60408051602081018690529081018390526060016040516020818303038152906040528051906020012093505b62000a3e6002846200392a565b6040805160208101859052908101849052909350606001604051602081830303815290604052805190602001209150808062000a7a9062003966565b915050620009a4565b50919392505050565b60008467ffffffffffffffff8416825b602081101562000b7f578160011660010362000b095786818151811062000ac75762000ac7620038cc565b60200260200101518360405160200162000aeb929190918252602082015260400190565b60405160208183030381529060405280519060200120925062000b5b565b8287828151811062000b1f5762000b1f620038cc565b602002602001015160405160200162000b42929190918252602082015260400190565b6040516020818303038152906040528051906020012092505b62000b686002836200392a565b91508062000b768162003966565b91505062000a9c565b5050821490505b949350505050565b60225460ff161562000c2f5760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a401620007f1565b62000c458a8a8a8a8a8a8a8a8a8a600162002266565b63ffffffff8916600090815260886020526040808220805460ff19166001179055516001600160a01b03851690849062000c889089908b908790602401620039fe565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1806b5f2000000000000000000000000000000000000000000000000000000001790525162000ced919062003a37565b60006040518083038185875af1925050503d806000811462000d2c576040519150601f19603f3d011682016040523d82523d6000602084013e62000d31565b606091505b505090508062000da95760405162461bcd60e51b8152602060048201526024808201527f4272696467653a3a636c61696d4d6573736167653a204d4553534147455f464160448201527f494c4544000000000000000000000000000000000000000000000000000000006064820152608401620007f1565b6040805163ffffffff8c81168252891660208201526001600160a01b0388811682840152861660608201526080810185905290517f25308c93ceeed162da955b3f7ce3e3f93606579e40fb92029faa9efe275459839181900360a00190a15050505050505050505050565b600054610100900460ff161580801562000e355750600054600160ff909116105b8062000e515750303b15801562000e51575060005460ff166001145b62000ec55760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401620007f1565b6000805460ff19166001179055801562000f0657600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6087805463ffffffff87167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000909116179055608b80546001600160a01b038087167fffffffffffffffffffffffff000000000000000000000000000000000000000092831617909255608c805492861692909116919091179055608d8290556703782dace9d90000608e5562000f9b620025f3565b801562000fff57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b620010106200220a565b620008c4600062002678565b60225460ff1615620010bd5760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a401620007f1565b620010d38a8a8a8a8a8a8a8a8a8a600062002266565b63ffffffff89166000908152608860205260409020805460ff191660011790556001600160a01b038516620011f257604080516000808252602082019092526001600160a01b0385169084906040516200112e919062003a37565b60006040518083038185875af1925050503d80600081146200116d576040519150601f19603f3d011682016040523d82523d6000602084013e62001172565b606091505b5050905080620011eb5760405162461bcd60e51b815260206004820152602760248201527f4272696467653a3a636c61696d41737365743a204554485f5452414e5346455260448201527f5f4641494c4544000000000000000000000000000000000000000000000000006064820152608401620007f1565b5062001574565b60875463ffffffff9081169087160362001222576200121c6001600160a01b0386168484620026e2565b62001574565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e088901b1660208201526bffffffffffffffffffffffff19606087901b16602482015260009060380160408051601f198184030181529181528151602092830120600081815260899093529120549091506001600160a01b031680620014e057600080600085806020019051810190620012c2919062003aa1565b925092509250600085848484604051620012dc9062003244565b620012ea9392919062003b22565b8190604051809103906000f59050801580156200130b573d6000803e3d6000fd5b506040517f40c10f190000000000000000000000000000000000000000000000000000000081526001600160a01b038b81166004830152602482018b9052919250908216906340c10f19906044016020604051808303816000875af115801562001379573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200139f919062003b6e565b50806089600088815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060405180604001604052808d63ffffffff1681526020018c6001600160a01b0316815250608a6000836001600160a01b03166001600160a01b0316815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a8154816001600160a01b0302191690836001600160a01b031602179055509050507fccd7715648d1f2bb13e158f96b5b6c3aeda555d4cb87112e274a6f28bc571d598c8c83604051620014ce9392919063ffffffff9390931683526001600160a01b03918216602084015216604082015260600190565b60405180910390a15050505062001571565b6040517f40c10f190000000000000000000000000000000000000000000000000000000081526001600160a01b038681166004830152602482018690528216906340c10f19906044016020604051808303816000875af115801562001549573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200156f919062003b6e565b505b50505b6040805163ffffffff8b81168252881660208201526001600160a01b0387811682840152851660608201526080810184905290517f25308c93ceeed162da955b3f7ce3e3f93606579e40fb92029faa9efe275459839181900360a00190a150505050505050505050565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e089901b1660208201526bffffffffffffffffffffffff19606088901b1660248201526000908190603801604051602081830303815290604052805190602001209050600060ff60f81b308360405180602001620016619062003244565b601f1982820381018352601f9091011660408190526200168e908d908d908d908d908d9060200162003bb9565b60408051601f1981840301815290829052620016ae929160200162003bfa565b604051602081830303815290604052805190602001206040516020016200172494939291907fff0000000000000000000000000000000000000000000000000000000000000094909416845260609290921b6bffffffffffffffffffffffff191660018401526015830152603582015260550190565b60408051808303601f1901815291905280516020909101209a9950505050505050505050565b60225460ff1615620017eb5760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a401620007f1565b60875463ffffffff908116908416036200186e5760405162461bcd60e51b815260206004820152602a60248201527f4272696467653a3a6272696467653a2044455354494e4154494f4e5f43414e5460448201527f5f42455f495453454c46000000000000000000000000000000000000000000006064820152608401620007f1565b6087546021546040517f501781209a1f8899323b96b4ef08b168df93e0a90c673d1e4cce39366cb62f9b92620018bb9260019263ffffffff9092169133918991899134918a919062003c2d565b60405180910390a16087548151602080840191909120604080517f0100000000000000000000000000000000000000000000000000000000000000818501527fffffffff0000000000000000000000000000000000000000000000000000000060e095861b811660218301526bffffffffffffffffffffffff1933606090811b82166025850152968a901b90911660398301529487901b909416603d85015234605185015260718085019290925280518085039092018252609190930190925281519101206200198b9062002792565b608b546001600160a01b03166333d6247d620019a662000999565b6040518263ffffffff1660e01b8152600401620019c591815260200190565b600060405180830381600087803b158015620019e057600080fd5b505af1158015620019f5573d6000803e3d6000fd5b50505050505050565b608c546001600160a01b0316331462001aa65760405162461bcd60e51b815260206004820152604b60248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7950726f6f664f66456660448201527f66696369656e63793a206f6e6c792050726f6f66206f6620456666696369656e60648201527f637920636f6e7472616374000000000000000000000000000000000000000000608482015260a401620007f1565b620008c4620028f1565b62001aba6200220a565b608d8190556040518181527f126d6a8888996898896a660f1c9a7a4ef612bd6df82281a13079dd27cc38758d9060200160405180910390a150565b62001aff6200220a565b6001600160a01b03811662001b7d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401620007f1565b62001b888162002678565b50565b60225460ff161562001c2c5760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a401620007f1565b60875463ffffffff9081169086160362001caf5760405162461bcd60e51b815260206004820152602a60248201527f4272696467653a3a6272696467653a2044455354494e4154494f4e5f43414e5460448201527f5f42455f495453454c46000000000000000000000000000000000000000000006064820152608401620007f1565b60008060606001600160a01b03891662001d445785341462001d3a5760405162461bcd60e51b815260206004820152602f60248201527f4272696467653a3a6272696467653a20414d4f554e545f444f45535f4e4f545f60448201527f4d415443485f4d53475f56414c554500000000000000000000000000000000006064820152608401620007f1565b6000915062001fce565b6001600160a01b03808a166000908152608a602090815260409182902082518084019093525463ffffffff811683526401000000009004909216918101829052901562001e2b576040517f9dc29fac000000000000000000000000000000000000000000000000000000008152336004820152602481018890526001600160a01b038b1690639dc29fac906044016020604051808303816000875af115801562001df2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001e18919062003b6e565b5060208101518151909450925062001fcc565b841562001e405762001e408a888888620029a0565b62001e576001600160a01b038b1633308a62002fc5565b899350608760009054906101000a900463ffffffff169250896001600160a01b03166306fdde036040518163ffffffff1660e01b8152600401600060405180830381865afa15801562001eae573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001ed8919081019062003c99565b8a6001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa15801562001f17573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001f41919081019062003c99565b8b6001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001f80573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001fa6919062003cd2565b60405160200162001fba9392919062003b22565b60405160208183030381529060405291505b505b7f501781209a1f8899323b96b4ef08b168df93e0a90c673d1e4cce39366cb62f9b600083858b8b8b876021546040516200201098979695949392919062003c2d565b60405180910390a18051602080830191909120604080516000818501527fffffffff0000000000000000000000000000000000000000000000000000000060e087811b821660218401526bffffffffffffffffffffffff1960608a811b82166025860152918f901b90921660398401528c901b16603d820152605181018a90526071808201939093528151808203909301835260910190528051910120620020b89062002792565b608b546001600160a01b03166333d6247d620020d362000999565b6040518263ffffffff1660e01b8152600401620020f291815260200190565b600060405180830381600087803b1580156200210d57600080fd5b505af115801562002122573d6000803e3d6000fd5b50505050505050505050505050565b60225460ff1615620021d25760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a401620007f1565b6022805460ff191660011790556040517f2261efe5aef6fedc1fd1550b25facc9181745623049c7901287030b9ad1a549790600090a1565b6055546001600160a01b03163314620008c45760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401620007f1565b63ffffffff8a1660009081526088602052604090205460ff1615620022f35760405162461bcd60e51b8152602060048201526024808201527f4272696467653a3a5f7665726966794c6561663a20414c52454144595f434c4160448201527f494d4544000000000000000000000000000000000000000000000000000000006064820152608401620007f1565b608b546040805160208082018d90528183018c9052825180830384018152606083019384905280519101207f257b36320000000000000000000000000000000000000000000000000000000090925260648101919091526000916001600160a01b03169063257b3632906084016020604051808303816000875af115801562002380573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620023a6919062003cf2565b90508015801590620023c55750608d54620023c2824262003d0c565b10155b620024395760405162461bcd60e51b815260206004820152602d60248201527f4272696467653a3a5f7665726966794c6561663a20474c4f42414c5f4558495460448201527f5f524f4f545f494e56414c4944000000000000000000000000000000000000006064820152608401620007f1565b60875463ffffffff878116911614620024bb5760405162461bcd60e51b815260206004820152603760248201527f4272696467653a3a5f7665726966794c6561663a2044455354494e4154494f4e60448201527f5f4e4554574f524b5f444f45535f4e4f545f4d415443480000000000000000006064820152608401620007f1565b60875460009063ffffffff16620024d4575088620024d7565b50895b8351602080860191909120604080517fff0000000000000000000000000000000000000000000000000000000000000060f888901b16818501527fffffffff0000000000000000000000000000000000000000000000000000000060e08e811b821660218401526bffffffffffffffffffffffff1960608f811b82166025860152918e901b90921660398401528b901b16603d820152605181018990526071808201939093528151808203909301835260910190528051910120620025a5908e8e63ffffffff168462000a8c565b620021225760405162461bcd60e51b815260206004820181905260248201527f4272696467653a3a5f7665726966794c6561663a20534d545f494e56414c49446044820152606401620007f1565b600054610100900460ff16620026725760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401620007f1565b620008c4335b605580546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6040516001600160a01b0383166024820152604481018290526200278d9084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526200301e565b505050565b806001620027a36020600262003e5f565b620027af919062003d0c565b60215410620028275760405162461bcd60e51b815260206004820152602a60248201527f4465706f736974436f6e74726163743a5f6465706f7369743a204d45524b4c4560448201527f5f545245455f46554c4c000000000000000000000000000000000000000000006064820152608401620007f1565b6001602160008282546200283c919062003e6d565b909155505060215460005b6020811015620028e657816001166001036200287c578260018260208110620028745762002874620038cc565b015550505050565b60018160208110620028925762002892620038cc565b01546040805160208101929092528101849052606001604051602081830303815290604052805190602001209250600282620028cf91906200392a565b915080620028dd8162003966565b91505062002847565b506200278d62003e88565b60225460ff166200296b5760405162461bcd60e51b815260206004820152603b60248201527f456d657267656e63794d616e616765723a3a6966456d657267656e637953746160448201527f74653a206f6e6c7920696620656d657267656e637920737461746500000000006064820152608401620007f1565b6022805460ff191690556040517f1e5e34eea33501aecf2ebec9fe0e884a40804275ea7fe10b2ba084c8374308b390600090a1565b6000620029e383838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506200310a92505050565b90507f2afa5331000000000000000000000000000000000000000000000000000000007fffffffff0000000000000000000000000000000000000000000000000000000082160162002ce557600080808080808062002a46896004818d62003eb7565b81019062002a55919062003ee3565b9650965096509650965096509650336001600160a01b0316876001600160a01b03161462002aec5760405162461bcd60e51b815260206004820152603060248201527f4272696467653a3a5f7065726d69743a205045524d49545f4f574e45525f4d5560448201527f53545f42455f5448455f53454e444552000000000000000000000000000000006064820152608401620007f1565b6001600160a01b038616301462002b6c5760405162461bcd60e51b815260206004820152602560248201527f4272696467653a3a5f7065726d69743a205350454e4445525f4d5553545f424560448201527f5f544849530000000000000000000000000000000000000000000000000000006064820152608401620007f1565b8a851462002be35760405162461bcd60e51b815260206004820152602d60248201527f4272696467653a3a5f7065726d69743a205045524d49545f414d4f554e545f4460448201527f4f45535f4e4f545f4d41544348000000000000000000000000000000000000006064820152608401620007f1565b604080516001600160a01b0389811660248301528881166044830152606482018890526084820187905260ff861660a483015260c4820185905260e48083018590528351808403909101815261010490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fd505accf000000000000000000000000000000000000000000000000000000001790529151918e169162002c91919062003a37565b6000604051808303816000865af19150503d806000811462002cd0576040519150601f19603f3d011682016040523d82523d6000602084013e62002cd5565b606091505b5050505050505050505062000fff565b7fffffffff0000000000000000000000000000000000000000000000000000000081167f8fcbaf0c000000000000000000000000000000000000000000000000000000001462002d785760405162461bcd60e51b815260206004820152601f60248201527f4272696467653a3a5f7065726d69743a204e4f545f56414c49445f43414c4c006044820152606401620007f1565b60008080808080808062002d908a6004818e62003eb7565b81019062002d9f919062003f3e565b97509750975097509750975097509750336001600160a01b0316886001600160a01b03161462002e385760405162461bcd60e51b815260206004820152603060248201527f4272696467653a3a5f7065726d69743a205045524d49545f4f574e45525f4d5560448201527f53545f42455f5448455f53454e444552000000000000000000000000000000006064820152608401620007f1565b6001600160a01b038716301462002eb85760405162461bcd60e51b815260206004820152602560248201527f4272696467653a3a5f7065726d69743a205350454e4445525f4d5553545f424560448201527f5f544849530000000000000000000000000000000000000000000000000000006064820152608401620007f1565b604080516001600160a01b038a811660248301528981166044830152606482018990526084820188905286151560a483015260ff861660c483015260e482018590526101048083018590528351808403909101815261012490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f8fcbaf0c000000000000000000000000000000000000000000000000000000001790529151918f169162002f6f919062003a37565b6000604051808303816000865af19150503d806000811462002fae576040519150601f19603f3d011682016040523d82523d6000602084013e62002fb3565b606091505b50505050505050505050505050505050565b6040516001600160a01b0380851660248301528316604482015260648101829052620030189085907f23b872dd000000000000000000000000000000000000000000000000000000009060840162002728565b50505050565b600062003075826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316620031119092919063ffffffff16565b8051909150156200278d578080602001905181019062003096919062003b6e565b6200278d5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401620007f1565b6020015190565b606062000b86848460008585600080866001600160a01b031685876040516200313b919062003a37565b60006040518083038185875af1925050503d80600081146200317a576040519150601f19603f3d011682016040523d82523d6000602084013e6200317f565b606091505b509150915062003192878383876200319d565b979650505050505050565b606083156200321157825160000362003209576001600160a01b0385163b620032095760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401620007f1565b508162000b86565b62000b868383815115620032285781518083602001fd5b8060405162461bcd60e51b8152600401620007f1919062003fca565b6119c78062003fe083390190565b6001600160a01b038116811462001b8857600080fd5b8035620032758162003252565b919050565b803563ffffffff811681146200327557600080fd5b60008083601f840112620032a257600080fd5b50813567ffffffffffffffff811115620032bb57600080fd5b602083019150836020828501011115620032d457600080fd5b9250929050565b60008060008060008060a08789031215620032f557600080fd5b8635620033028162003252565b955062003312602088016200327a565b94506040870135620033248162003252565b935060608701359250608087013567ffffffffffffffff8111156200334857600080fd5b6200335689828a016200328f565b979a9699509497509295939492505050565b600080604083850312156200337c57600080fd5b62003387836200327a565b91506020830135620033998162003252565b809150509250929050565b600060208284031215620033b757600080fd5b5035919050565b600060208284031215620033d157600080fd5b620033dc826200327a565b9392505050565b600060208284031215620033f657600080fd5b8135620033dc8162003252565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156200345e576200345e62003403565b604052919050565b600082601f8301126200347857600080fd5b8135602067ffffffffffffffff82111562003497576200349762003403565b8160051b620034a882820162003432565b9283528481018201928281019087851115620034c357600080fd5b83870192505b848310156200319257823582529183019190830190620034c9565b60008060008060808587031215620034fb57600080fd5b84359350602085013567ffffffffffffffff808211156200351b57600080fd5b620035298883890162003466565b94506040870135915080821682146200354157600080fd5b509396929550929360600135925050565b60ff8116811462001b8857600080fd5b600080600080600080600060e0888a0312156200357e57600080fd5b87356200358b8162003552565b96506200359b602089016200327a565b95506040880135620035ad8162003252565b9450620035bd606089016200327a565b93506080880135620035cf8162003252565b9699959850939692959460a0840135945060c09093013592915050565b600067ffffffffffffffff82111562003609576200360962003403565b50601f01601f191660200190565b600082601f8301126200362957600080fd5b8135620036406200363a82620035ec565b62003432565b8181528460208386010111156200365657600080fd5b816020850160208301376000918101602001919091529392505050565b6000806000806000806000806000806101408b8d0312156200369457600080fd5b8a3567ffffffffffffffff80821115620036ad57600080fd5b620036bb8e838f0162003466565b9b50620036cb60208e016200327a565b9a5060408d0135995060608d01359850620036e960808e016200327a565b9750620036f960a08e0162003268565b96506200370960c08e016200327a565b95506200371960e08e0162003268565b94506101008d013593506101208d01359150808211156200373957600080fd5b50620037488d828e0162003617565b9150509295989b9194979a5092959850565b600080600080608085870312156200377157600080fd5b6200377c856200327a565b935060208501356200378e8162003252565b92506040850135620037a08162003252565b9396929550929360600135925050565b600080600080600080600060a0888a031215620037cc57600080fd5b620037d7886200327a565b96506020880135620037e98162003252565b9550604088013567ffffffffffffffff808211156200380757600080fd5b620038158b838c016200328f565b909750955060608a01359150808211156200382f57600080fd5b506200383e8a828b016200328f565b9094509250506080880135620038548162003552565b8091505092959891949750929550565b6000806000606084860312156200387a57600080fd5b62003885846200327a565b92506020840135620038978162003252565b9150604084013567ffffffffffffffff811115620038b457600080fd5b620038c28682870162003617565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008262003961577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036200399a576200399a620038fb565b5060010190565b60005b83811015620039be578181015183820152602001620039a4565b83811115620030185750506000910152565b60008151808452620039ea816020860160208601620039a1565b601f01601f19169290920160200192915050565b6001600160a01b038416815263ffffffff8316602082015260606040820152600062003a2e6060830184620039d0565b95945050505050565b6000825162003a4b818460208701620039a1565b9190910192915050565b600082601f83011262003a6757600080fd5b815162003a786200363a82620035ec565b81815284602083860101111562003a8e57600080fd5b62000b86826020830160208701620039a1565b60008060006060848603121562003ab757600080fd5b835167ffffffffffffffff8082111562003ad057600080fd5b62003ade8783880162003a55565b9450602086015191508082111562003af557600080fd5b5062003b048682870162003a55565b925050604084015162003b178162003552565b809150509250925092565b60608152600062003b376060830186620039d0565b828103602084015262003b4b8186620039d0565b91505060ff83166040830152949350505050565b801515811462001b8857600080fd5b60006020828403121562003b8157600080fd5b8151620033dc8162003b5f565b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b60608152600062003bcf60608301878962003b8e565b828103602084015262003be481868862003b8e565b91505060ff831660408301529695505050505050565b6000835162003c0e818460208801620039a1565b83519083019062003c24818360208801620039a1565b01949350505050565b600061010060ff8b16835263ffffffff808b1660208501526001600160a01b03808b166040860152818a1660608601528089166080860152508660a08501528160c085015262003c8082850187620039d0565b925080851660e085015250509998505050505050505050565b60006020828403121562003cac57600080fd5b815167ffffffffffffffff81111562003cc457600080fd5b62000b868482850162003a55565b60006020828403121562003ce557600080fd5b8151620033dc8162003552565b60006020828403121562003d0557600080fd5b5051919050565b60008282101562003d215762003d21620038fb565b500390565b600181815b8085111562003d8557817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111562003d695762003d69620038fb565b8085161562003d7757918102915b93841c939080029062003d2b565b509250929050565b60008262003d9e5750600162000943565b8162003dad5750600062000943565b816001811462003dc6576002811462003dd15762003df1565b600191505062000943565b60ff84111562003de55762003de5620038fb565b50506001821b62000943565b5060208310610133831016604e8410600b841016171562003e16575081810a62000943565b62003e22838362003d26565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111562003e575762003e57620038fb565b029392505050565b6000620033dc838362003d8d565b6000821982111562003e835762003e83620038fb565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b6000808585111562003ec857600080fd5b8386111562003ed657600080fd5b5050820193919092039150565b600080600080600080600060e0888a03121562003eff57600080fd5b873562003f0c8162003252565b9650602088013562003f1e8162003252565b955060408801359450606088013593506080880135620035cf8162003552565b600080600080600080600080610100898b03121562003f5c57600080fd5b883562003f698162003252565b9750602089013562003f7b8162003252565b96506040890135955060608901359450608089013562003f9b8162003b5f565b935060a089013562003fad8162003552565b979a969950949793969295929450505060c08201359160e0013590565b602081526000620033dc6020830184620039d056fe60c06040523480156200001157600080fd5b50604051620019c7380380620019c78339810160408190526200003491620002ad565b82826003620000448382620003c1565b506004620000538282620003c1565b5050600580546001600160a81b0319163360ff60a01b191617600160a01b60ff851602179055504660808190526200008b9062000098565b60a052506200048d915050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f620000c562000146565b805160209182012060408051808201825260018152603160f81b90840152805192830193909352918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060820152608081018390523060a082015260c001604051602081830303815290604052805190602001209050919050565b606060038054620001579062000332565b80601f0160208091040260200160405190810160405280929190818152602001828054620001859062000332565b8015620001d65780601f10620001aa57610100808354040283529160200191620001d6565b820191906000526020600020905b815481529060010190602001808311620001b857829003601f168201915b5050505050905090565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200020857600080fd5b81516001600160401b0380821115620002255762000225620001e0565b604051601f8301601f19908116603f01168101908282118183101715620002505762000250620001e0565b816040528381526020925086838588010111156200026d57600080fd5b600091505b8382101562000291578582018301518183018401529082019062000272565b83821115620002a35760008385830101525b9695505050505050565b600080600060608486031215620002c357600080fd5b83516001600160401b0380821115620002db57600080fd5b620002e987838801620001f6565b945060208601519150808211156200030057600080fd5b506200030f86828701620001f6565b925050604084015160ff811681146200032757600080fd5b809150509250925092565b600181811c908216806200034757607f821691505b6020821081036200036857634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620003bc57600081815260208120601f850160051c81016020861015620003975750805b601f850160051c820191505b81811015620003b857828155600101620003a3565b5050505b505050565b81516001600160401b03811115620003dd57620003dd620001e0565b620003f581620003ee845462000332565b846200036e565b602080601f8311600181146200042d5760008415620004145750858301515b600019600386901b1c1916600185901b178555620003b8565b600085815260208120601f198616915b828110156200045e578886015182559484019460019091019084016200043d565b50858210156200047d5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60805160a05161150d620004ba600039600061053001526000818161036f01526104fa015261150d6000f3fe608060405234801561001057600080fd5b50600436106101775760003560e01c806370a08231116100d8578063a457c2d71161008c578063d505accf11610066578063d505accf14610391578063dd62ed3e146103a6578063ffa1ad74146103ec57600080fd5b8063a457c2d714610344578063a9059cbb14610357578063cd0d00961461036a57600080fd5b806395d89b41116100bd57806395d89b41146102e45780639dc29fac146102ec578063a3c573eb146102ff57600080fd5b806370a082311461028e5780637ecebe00146102c457600080fd5b806330adf81f1161012f5780633644e515116101145780633644e51514610260578063395093511461026857806340c10f191461027b57600080fd5b806330adf81f14610209578063313ce5671461023057600080fd5b806318160ddd1161016057806318160ddd146101bd57806320606b70146101cf57806323b872dd146101f657600080fd5b806306fdde031461017c578063095ea7b31461019a575b600080fd5b610184610428565b604051610191919061123b565b60405180910390f35b6101ad6101a83660046112d7565b6104ba565b6040519015158152602001610191565b6002545b604051908152602001610191565b6101c17f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81565b6101ad610204366004611301565b6104d2565b6101c17f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b60055474010000000000000000000000000000000000000000900460ff1660405160ff9091168152602001610191565b6101c16104f6565b6101ad6102763660046112d7565b610552565b6101ad6102893660046112d7565b61059e565b6101c161029c36600461133d565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6101c16102d236600461133d565b60066020526000908152604090205481565b610184610645565b6101ad6102fa3660046112d7565b610654565b60055461031f9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610191565b6101ad6103523660046112d7565b6106ed565b6101ad6103653660046112d7565b6107a4565b6101c17f000000000000000000000000000000000000000000000000000000000000000081565b6103a461039f36600461135f565b6107b2565b005b6101c16103b43660046113d2565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6101846040518060400160405280600181526020017f310000000000000000000000000000000000000000000000000000000000000081525081565b60606003805461043790611405565b80601f016020809104026020016040519081016040528092919081815260200182805461046390611405565b80156104b05780601f10610485576101008083540402835291602001916104b0565b820191906000526020600020905b81548152906001019060200180831161049357829003601f168201915b5050505050905090565b6000336104c8818585610ab4565b5060019392505050565b6000336104e0858285610c34565b6104eb858585610cf1565b506001949350505050565b60007f0000000000000000000000000000000000000000000000000000000000000000461461052d5761052846610f12565b905090565b507f000000000000000000000000000000000000000000000000000000000000000090565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906104c89082908690610599908790611487565b610ab4565b60055460009073ffffffffffffffffffffffffffffffffffffffff1633146106325760405162461bcd60e51b8152602060048201526024808201527f546f6b656e577261707065643a3a6f6e6c794272696467653a204e4f545f425260448201527f494447450000000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b61063c8383610fda565b50600192915050565b60606004805461043790611405565b60055460009073ffffffffffffffffffffffffffffffffffffffff1633146106e35760405162461bcd60e51b8152602060048201526024808201527f546f6b656e577261707065643a3a6f6e6c794272696467653a204e4f545f425260448201527f49444745000000000000000000000000000000000000000000000000000000006064820152608401610629565b61063c83836110b3565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190838110156107975760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f0000000000000000000000000000000000000000000000000000006064820152608401610629565b6104eb8286868403610ab4565b6000336104c8818585610cf1565b834211156108275760405162461bcd60e51b8152602060048201526024808201527f546f6b656e577261707065643a3a7065726d69743a204578706972656420706560448201527f726d6974000000000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff8716600090815260066020526040812080547f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918a918a918a9190866108818361149f565b9091555060408051602081019690965273ffffffffffffffffffffffffffffffffffffffff94851690860152929091166060840152608083015260a082015260c0810186905260e00160405160208183030381529060405280519060200120905060006108ec6104f6565b6040517f19010000000000000000000000000000000000000000000000000000000000006020820152602281019190915260428101839052606201604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282528051602091820120600080855291840180845281905260ff89169284019290925260608301879052608083018690529092509060019060a0016020604051602081039080840390855afa1580156109b0573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811615801590610a2b57508973ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b610a9d5760405162461bcd60e51b815260206004820152602760248201527f546f6b656e577261707065643a3a7065726d69743a20496e76616c696420736960448201527f676e6174757265000000000000000000000000000000000000000000000000006064820152608401610629565b610aa88a8a8a610ab4565b50505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff8316610b3c5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff8216610bc55760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610ceb5781811015610cde5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610629565b610ceb8484848403610ab4565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610d7a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff8216610e035760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610e9f5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610ceb565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f610f3d610428565b8051602091820120604080518082018252600181527f310000000000000000000000000000000000000000000000000000000000000090840152805192830193909352918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060820152608081018390523060a082015260c001604051602081830303815290604052805190602001209050919050565b73ffffffffffffffffffffffffffffffffffffffff821661103d5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610629565b806002600082825461104f9190611487565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b73ffffffffffffffffffffffffffffffffffffffff821661113c5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260208190526040902054818110156111d85760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f63650000000000000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff83166000818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101610c27565b600060208083528351808285015260005b818110156112685785810183015185820160400152820161124c565b8181111561127a576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146112d257600080fd5b919050565b600080604083850312156112ea57600080fd5b6112f3836112ae565b946020939093013593505050565b60008060006060848603121561131657600080fd5b61131f846112ae565b925061132d602085016112ae565b9150604084013590509250925092565b60006020828403121561134f57600080fd5b611358826112ae565b9392505050565b600080600080600080600060e0888a03121561137a57600080fd5b611383886112ae565b9650611391602089016112ae565b95506040880135945060608801359350608088013560ff811681146113b557600080fd5b9699959850939692959460a0840135945060c09093013592915050565b600080604083850312156113e557600080fd5b6113ee836112ae565b91506113fc602084016112ae565b90509250929050565b600181811c9082168061141957607f821691505b602082108103611452577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000821982111561149a5761149a611458565b500190565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036114d0576114d0611458565b506001019056fea264697066735822122094134962e5fa2f6357086a2590b7f3a754d340b16e5312664d82a308bc23a0df64736f6c634300080f0033a2646970667358221220fa289e5d6107b7c3d0d8121dac9d073a816dd5186ba86cef1d20063f64fac49864736f6c634300080f0033", + "deployedBytecode": "0x608060405260043610620001ff5760003560e01c80637b6323c11162000117578063d02103ca11620000a1578063e7a5b4ea116200006c578063e7a5b4ea14620006de578063ed6be5c91462000703578063f2fde38b146200071a578063ff634ed7146200073f57600080fd5b8063d02103ca1462000659578063d96a15f7146200067b578063dbc169761462000692578063e737588114620006aa57600080fd5b806391e57e2d11620000e257806391e57e2d14620005bd578063a08e8a0814620005d5578063aaa13cc214620005ff578063bab161bf146200062457600080fd5b80637b6323c1146200051c57806381b1c17414620005415780638da5cb5b146200057b5780638f611519146200059b57600080fd5b80632dfdf0b511620001995780633e19704311620001645780633e19704314620003d95780634638554914620004ba5780636555954014620004df578063715018a6146200050457600080fd5b80632dfdf0b51462000315578063318aee3d146200032d5780633ae05047146200039c5780633da8168214620003b457600080fd5b80632072f6c511620001da5780632072f6c5146200027557806322e95f2c146200028d5780632b5e42e714620002cb5780632c3f58cd14620002f057600080fd5b80630871e97114620002045780630e1da6c3146200021d57806315064c961462000248575b600080fd5b6200021b62000215366004620032db565b62000756565b005b3480156200022a57600080fd5b5062000235608d5481565b6040519081526020015b60405180910390f35b3480156200025557600080fd5b50602254620002649060ff1681565b60405190151581526020016200023f565b3480156200028257600080fd5b506200021b62000812565b3480156200029a57600080fd5b50620002b2620002ac36600462003368565b620008c6565b6040516001600160a01b0390911681526020016200023f565b348015620002d857600080fd5b506200021b620002ea366004620033a4565b62000949565b348015620002fd57600080fd5b506200021b6200030f366004620033be565b62000958565b3480156200032257600080fd5b506200023560215481565b3480156200033a57600080fd5b50620003776200034c366004620033e3565b608a6020526000908152604090205463ffffffff81169064010000000090046001600160a01b031682565b6040805163ffffffff90931683526001600160a01b039091166020830152016200023f565b348015620003a957600080fd5b506200023562000999565b348015620003c157600080fd5b5062000264620003d3366004620034e4565b62000a8c565b348015620003e657600080fd5b5062000235620003f836600462003562565b6040517fff0000000000000000000000000000000000000000000000000000000000000060f889901b1660208201527fffffffff0000000000000000000000000000000000000000000000000000000060e088811b821660218401526bffffffffffffffffffffffff19606089811b821660258601529188901b909216603984015285901b16603d8201526051810183905260718101829052600090609101604051602081830303815290604052805190602001209050979650505050505050565b348015620004c757600080fd5b506200021b620004d936600462003673565b62000b8e565b348015620004ec57600080fd5b506200021b620004fe3660046200375a565b62000e14565b3480156200051157600080fd5b506200021b62001006565b3480156200052957600080fd5b506200021b6200053b36600462003673565b6200101c565b3480156200054e57600080fd5b50620002b262000560366004620033a4565b6089602052600090815260409020546001600160a01b031681565b3480156200058857600080fd5b506055546001600160a01b0316620002b2565b348015620005a857600080fd5b50608c54620002b2906001600160a01b031681565b348015620005ca57600080fd5b5062000235608e5481565b348015620005e257600080fd5b50620005ec600081565b60405160ff90911681526020016200023f565b3480156200060c57600080fd5b50620002b26200061e366004620037b0565b620015de565b3480156200063157600080fd5b50608754620006439063ffffffff1681565b60405163ffffffff90911681526020016200023f565b3480156200066657600080fd5b50608b54620002b2906001600160a01b031681565b6200021b6200068c36600462003864565b6200174a565b3480156200069f57600080fd5b506200021b620019fe565b348015620006b757600080fd5b5062000264620006c9366004620033a4565b60886020526000908152604090205460ff1681565b348015620006eb57600080fd5b506200021b620006fd366004620033a4565b62001ab0565b3480156200071057600080fd5b5062000643600081565b3480156200072757600080fd5b506200021b62000739366004620033e3565b62001af5565b3480156200074c57600080fd5b50620005ec600181565b608e54341115620007fa5760405162461bcd60e51b815260206004820152604a60248201527f4272696467653a3a6272696467653a2043616e6e6f7420627269646765206d6f60448201527f7265207468616e206d6178457468657242726964676520696e20696e7465726e60648201527f616c20746573746e657400000000000000000000000000000000000000000000608482015260a4015b60405180910390fd5b6200080a86868686868662001b8b565b505050505050565b608c546001600160a01b03163314620008ba5760405162461bcd60e51b815260206004820152604b60248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7950726f6f664f66456660448201527f66696369656e63793a206f6e6c792050726f6f66206f6620456666696369656e60648201527f637920636f6e7472616374000000000000000000000000000000000000000000608482015260a401620007f1565b620008c462002131565b565b6040805160e084901b7fffffffff0000000000000000000000000000000000000000000000000000000016602080830191909152606084901b6bffffffffffffffffffffffff1916602483015282516018818403018152603890920183528151918101919091206000908152608990915220546001600160a01b03165b92915050565b620009536200220a565b608e55565b620009626200220a565b608780547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001663ffffffff92909216919091179055565b602154600090819081805b602081101562000a83578260011660010362000a045760018160208110620009d057620009d0620038cc565b0154604080516020810192909252810185905260600160405160208183030381529060405280519060200120935062000a31565b60408051602081018690529081018390526060016040516020818303038152906040528051906020012093505b62000a3e6002846200392a565b6040805160208101859052908101849052909350606001604051602081830303815290604052805190602001209150808062000a7a9062003966565b915050620009a4565b50919392505050565b60008467ffffffffffffffff8416825b602081101562000b7f578160011660010362000b095786818151811062000ac75762000ac7620038cc565b60200260200101518360405160200162000aeb929190918252602082015260400190565b60405160208183030381529060405280519060200120925062000b5b565b8287828151811062000b1f5762000b1f620038cc565b602002602001015160405160200162000b42929190918252602082015260400190565b6040516020818303038152906040528051906020012092505b62000b686002836200392a565b91508062000b768162003966565b91505062000a9c565b5050821490505b949350505050565b60225460ff161562000c2f5760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a401620007f1565b62000c458a8a8a8a8a8a8a8a8a8a600162002266565b63ffffffff8916600090815260886020526040808220805460ff19166001179055516001600160a01b03851690849062000c889089908b908790602401620039fe565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1806b5f2000000000000000000000000000000000000000000000000000000001790525162000ced919062003a37565b60006040518083038185875af1925050503d806000811462000d2c576040519150601f19603f3d011682016040523d82523d6000602084013e62000d31565b606091505b505090508062000da95760405162461bcd60e51b8152602060048201526024808201527f4272696467653a3a636c61696d4d6573736167653a204d4553534147455f464160448201527f494c4544000000000000000000000000000000000000000000000000000000006064820152608401620007f1565b6040805163ffffffff8c81168252891660208201526001600160a01b0388811682840152861660608201526080810185905290517f25308c93ceeed162da955b3f7ce3e3f93606579e40fb92029faa9efe275459839181900360a00190a15050505050505050505050565b600054610100900460ff161580801562000e355750600054600160ff909116105b8062000e515750303b15801562000e51575060005460ff166001145b62000ec55760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401620007f1565b6000805460ff19166001179055801562000f0657600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6087805463ffffffff87167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000909116179055608b80546001600160a01b038087167fffffffffffffffffffffffff000000000000000000000000000000000000000092831617909255608c805492861692909116919091179055608d8290556703782dace9d90000608e5562000f9b620025f3565b801562000fff57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b620010106200220a565b620008c4600062002678565b60225460ff1615620010bd5760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a401620007f1565b620010d38a8a8a8a8a8a8a8a8a8a600062002266565b63ffffffff89166000908152608860205260409020805460ff191660011790556001600160a01b038516620011f257604080516000808252602082019092526001600160a01b0385169084906040516200112e919062003a37565b60006040518083038185875af1925050503d80600081146200116d576040519150601f19603f3d011682016040523d82523d6000602084013e62001172565b606091505b5050905080620011eb5760405162461bcd60e51b815260206004820152602760248201527f4272696467653a3a636c61696d41737365743a204554485f5452414e5346455260448201527f5f4641494c4544000000000000000000000000000000000000000000000000006064820152608401620007f1565b5062001574565b60875463ffffffff9081169087160362001222576200121c6001600160a01b0386168484620026e2565b62001574565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e088901b1660208201526bffffffffffffffffffffffff19606087901b16602482015260009060380160408051601f198184030181529181528151602092830120600081815260899093529120549091506001600160a01b031680620014e057600080600085806020019051810190620012c2919062003aa1565b925092509250600085848484604051620012dc9062003244565b620012ea9392919062003b22565b8190604051809103906000f59050801580156200130b573d6000803e3d6000fd5b506040517f40c10f190000000000000000000000000000000000000000000000000000000081526001600160a01b038b81166004830152602482018b9052919250908216906340c10f19906044016020604051808303816000875af115801562001379573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200139f919062003b6e565b50806089600088815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060405180604001604052808d63ffffffff1681526020018c6001600160a01b0316815250608a6000836001600160a01b03166001600160a01b0316815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a8154816001600160a01b0302191690836001600160a01b031602179055509050507fccd7715648d1f2bb13e158f96b5b6c3aeda555d4cb87112e274a6f28bc571d598c8c83604051620014ce9392919063ffffffff9390931683526001600160a01b03918216602084015216604082015260600190565b60405180910390a15050505062001571565b6040517f40c10f190000000000000000000000000000000000000000000000000000000081526001600160a01b038681166004830152602482018690528216906340c10f19906044016020604051808303816000875af115801562001549573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200156f919062003b6e565b505b50505b6040805163ffffffff8b81168252881660208201526001600160a01b0387811682840152851660608201526080810184905290517f25308c93ceeed162da955b3f7ce3e3f93606579e40fb92029faa9efe275459839181900360a00190a150505050505050505050565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e089901b1660208201526bffffffffffffffffffffffff19606088901b1660248201526000908190603801604051602081830303815290604052805190602001209050600060ff60f81b308360405180602001620016619062003244565b601f1982820381018352601f9091011660408190526200168e908d908d908d908d908d9060200162003bb9565b60408051601f1981840301815290829052620016ae929160200162003bfa565b604051602081830303815290604052805190602001206040516020016200172494939291907fff0000000000000000000000000000000000000000000000000000000000000094909416845260609290921b6bffffffffffffffffffffffff191660018401526015830152603582015260550190565b60408051808303601f1901815291905280516020909101209a9950505050505050505050565b60225460ff1615620017eb5760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a401620007f1565b60875463ffffffff908116908416036200186e5760405162461bcd60e51b815260206004820152602a60248201527f4272696467653a3a6272696467653a2044455354494e4154494f4e5f43414e5460448201527f5f42455f495453454c46000000000000000000000000000000000000000000006064820152608401620007f1565b6087546021546040517f501781209a1f8899323b96b4ef08b168df93e0a90c673d1e4cce39366cb62f9b92620018bb9260019263ffffffff9092169133918991899134918a919062003c2d565b60405180910390a16087548151602080840191909120604080517f0100000000000000000000000000000000000000000000000000000000000000818501527fffffffff0000000000000000000000000000000000000000000000000000000060e095861b811660218301526bffffffffffffffffffffffff1933606090811b82166025850152968a901b90911660398301529487901b909416603d85015234605185015260718085019290925280518085039092018252609190930190925281519101206200198b9062002792565b608b546001600160a01b03166333d6247d620019a662000999565b6040518263ffffffff1660e01b8152600401620019c591815260200190565b600060405180830381600087803b158015620019e057600080fd5b505af1158015620019f5573d6000803e3d6000fd5b50505050505050565b608c546001600160a01b0316331462001aa65760405162461bcd60e51b815260206004820152604b60248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7950726f6f664f66456660448201527f66696369656e63793a206f6e6c792050726f6f66206f6620456666696369656e60648201527f637920636f6e7472616374000000000000000000000000000000000000000000608482015260a401620007f1565b620008c4620028f1565b62001aba6200220a565b608d8190556040518181527f126d6a8888996898896a660f1c9a7a4ef612bd6df82281a13079dd27cc38758d9060200160405180910390a150565b62001aff6200220a565b6001600160a01b03811662001b7d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401620007f1565b62001b888162002678565b50565b60225460ff161562001c2c5760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a401620007f1565b60875463ffffffff9081169086160362001caf5760405162461bcd60e51b815260206004820152602a60248201527f4272696467653a3a6272696467653a2044455354494e4154494f4e5f43414e5460448201527f5f42455f495453454c46000000000000000000000000000000000000000000006064820152608401620007f1565b60008060606001600160a01b03891662001d445785341462001d3a5760405162461bcd60e51b815260206004820152602f60248201527f4272696467653a3a6272696467653a20414d4f554e545f444f45535f4e4f545f60448201527f4d415443485f4d53475f56414c554500000000000000000000000000000000006064820152608401620007f1565b6000915062001fce565b6001600160a01b03808a166000908152608a602090815260409182902082518084019093525463ffffffff811683526401000000009004909216918101829052901562001e2b576040517f9dc29fac000000000000000000000000000000000000000000000000000000008152336004820152602481018890526001600160a01b038b1690639dc29fac906044016020604051808303816000875af115801562001df2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001e18919062003b6e565b5060208101518151909450925062001fcc565b841562001e405762001e408a888888620029a0565b62001e576001600160a01b038b1633308a62002fc5565b899350608760009054906101000a900463ffffffff169250896001600160a01b03166306fdde036040518163ffffffff1660e01b8152600401600060405180830381865afa15801562001eae573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001ed8919081019062003c99565b8a6001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa15801562001f17573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262001f41919081019062003c99565b8b6001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001f80573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001fa6919062003cd2565b60405160200162001fba9392919062003b22565b60405160208183030381529060405291505b505b7f501781209a1f8899323b96b4ef08b168df93e0a90c673d1e4cce39366cb62f9b600083858b8b8b876021546040516200201098979695949392919062003c2d565b60405180910390a18051602080830191909120604080516000818501527fffffffff0000000000000000000000000000000000000000000000000000000060e087811b821660218401526bffffffffffffffffffffffff1960608a811b82166025860152918f901b90921660398401528c901b16603d820152605181018a90526071808201939093528151808203909301835260910190528051910120620020b89062002792565b608b546001600160a01b03166333d6247d620020d362000999565b6040518263ffffffff1660e01b8152600401620020f291815260200190565b600060405180830381600087803b1580156200210d57600080fd5b505af115801562002122573d6000803e3d6000fd5b50505050505050505050505050565b60225460ff1615620021d25760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a401620007f1565b6022805460ff191660011790556040517f2261efe5aef6fedc1fd1550b25facc9181745623049c7901287030b9ad1a549790600090a1565b6055546001600160a01b03163314620008c45760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401620007f1565b63ffffffff8a1660009081526088602052604090205460ff1615620022f35760405162461bcd60e51b8152602060048201526024808201527f4272696467653a3a5f7665726966794c6561663a20414c52454144595f434c4160448201527f494d4544000000000000000000000000000000000000000000000000000000006064820152608401620007f1565b608b546040805160208082018d90528183018c9052825180830384018152606083019384905280519101207f257b36320000000000000000000000000000000000000000000000000000000090925260648101919091526000916001600160a01b03169063257b3632906084016020604051808303816000875af115801562002380573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620023a6919062003cf2565b90508015801590620023c55750608d54620023c2824262003d0c565b10155b620024395760405162461bcd60e51b815260206004820152602d60248201527f4272696467653a3a5f7665726966794c6561663a20474c4f42414c5f4558495460448201527f5f524f4f545f494e56414c4944000000000000000000000000000000000000006064820152608401620007f1565b60875463ffffffff878116911614620024bb5760405162461bcd60e51b815260206004820152603760248201527f4272696467653a3a5f7665726966794c6561663a2044455354494e4154494f4e60448201527f5f4e4554574f524b5f444f45535f4e4f545f4d415443480000000000000000006064820152608401620007f1565b60875460009063ffffffff16620024d4575088620024d7565b50895b8351602080860191909120604080517fff0000000000000000000000000000000000000000000000000000000000000060f888901b16818501527fffffffff0000000000000000000000000000000000000000000000000000000060e08e811b821660218401526bffffffffffffffffffffffff1960608f811b82166025860152918e901b90921660398401528b901b16603d820152605181018990526071808201939093528151808203909301835260910190528051910120620025a5908e8e63ffffffff168462000a8c565b620021225760405162461bcd60e51b815260206004820181905260248201527f4272696467653a3a5f7665726966794c6561663a20534d545f494e56414c49446044820152606401620007f1565b600054610100900460ff16620026725760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401620007f1565b620008c4335b605580546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6040516001600160a01b0383166024820152604481018290526200278d9084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526200301e565b505050565b806001620027a36020600262003e5f565b620027af919062003d0c565b60215410620028275760405162461bcd60e51b815260206004820152602a60248201527f4465706f736974436f6e74726163743a5f6465706f7369743a204d45524b4c4560448201527f5f545245455f46554c4c000000000000000000000000000000000000000000006064820152608401620007f1565b6001602160008282546200283c919062003e6d565b909155505060215460005b6020811015620028e657816001166001036200287c578260018260208110620028745762002874620038cc565b015550505050565b60018160208110620028925762002892620038cc565b01546040805160208101929092528101849052606001604051602081830303815290604052805190602001209250600282620028cf91906200392a565b915080620028dd8162003966565b91505062002847565b506200278d62003e88565b60225460ff166200296b5760405162461bcd60e51b815260206004820152603b60248201527f456d657267656e63794d616e616765723a3a6966456d657267656e637953746160448201527f74653a206f6e6c7920696620656d657267656e637920737461746500000000006064820152608401620007f1565b6022805460ff191690556040517f1e5e34eea33501aecf2ebec9fe0e884a40804275ea7fe10b2ba084c8374308b390600090a1565b6000620029e383838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506200310a92505050565b90507f2afa5331000000000000000000000000000000000000000000000000000000007fffffffff0000000000000000000000000000000000000000000000000000000082160162002ce557600080808080808062002a46896004818d62003eb7565b81019062002a55919062003ee3565b9650965096509650965096509650336001600160a01b0316876001600160a01b03161462002aec5760405162461bcd60e51b815260206004820152603060248201527f4272696467653a3a5f7065726d69743a205045524d49545f4f574e45525f4d5560448201527f53545f42455f5448455f53454e444552000000000000000000000000000000006064820152608401620007f1565b6001600160a01b038616301462002b6c5760405162461bcd60e51b815260206004820152602560248201527f4272696467653a3a5f7065726d69743a205350454e4445525f4d5553545f424560448201527f5f544849530000000000000000000000000000000000000000000000000000006064820152608401620007f1565b8a851462002be35760405162461bcd60e51b815260206004820152602d60248201527f4272696467653a3a5f7065726d69743a205045524d49545f414d4f554e545f4460448201527f4f45535f4e4f545f4d41544348000000000000000000000000000000000000006064820152608401620007f1565b604080516001600160a01b0389811660248301528881166044830152606482018890526084820187905260ff861660a483015260c4820185905260e48083018590528351808403909101815261010490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fd505accf000000000000000000000000000000000000000000000000000000001790529151918e169162002c91919062003a37565b6000604051808303816000865af19150503d806000811462002cd0576040519150601f19603f3d011682016040523d82523d6000602084013e62002cd5565b606091505b5050505050505050505062000fff565b7fffffffff0000000000000000000000000000000000000000000000000000000081167f8fcbaf0c000000000000000000000000000000000000000000000000000000001462002d785760405162461bcd60e51b815260206004820152601f60248201527f4272696467653a3a5f7065726d69743a204e4f545f56414c49445f43414c4c006044820152606401620007f1565b60008080808080808062002d908a6004818e62003eb7565b81019062002d9f919062003f3e565b97509750975097509750975097509750336001600160a01b0316886001600160a01b03161462002e385760405162461bcd60e51b815260206004820152603060248201527f4272696467653a3a5f7065726d69743a205045524d49545f4f574e45525f4d5560448201527f53545f42455f5448455f53454e444552000000000000000000000000000000006064820152608401620007f1565b6001600160a01b038716301462002eb85760405162461bcd60e51b815260206004820152602560248201527f4272696467653a3a5f7065726d69743a205350454e4445525f4d5553545f424560448201527f5f544849530000000000000000000000000000000000000000000000000000006064820152608401620007f1565b604080516001600160a01b038a811660248301528981166044830152606482018990526084820188905286151560a483015260ff861660c483015260e482018590526101048083018590528351808403909101815261012490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f8fcbaf0c000000000000000000000000000000000000000000000000000000001790529151918f169162002f6f919062003a37565b6000604051808303816000865af19150503d806000811462002fae576040519150601f19603f3d011682016040523d82523d6000602084013e62002fb3565b606091505b50505050505050505050505050505050565b6040516001600160a01b0380851660248301528316604482015260648101829052620030189085907f23b872dd000000000000000000000000000000000000000000000000000000009060840162002728565b50505050565b600062003075826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316620031119092919063ffffffff16565b8051909150156200278d578080602001905181019062003096919062003b6e565b6200278d5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401620007f1565b6020015190565b606062000b86848460008585600080866001600160a01b031685876040516200313b919062003a37565b60006040518083038185875af1925050503d80600081146200317a576040519150601f19603f3d011682016040523d82523d6000602084013e6200317f565b606091505b509150915062003192878383876200319d565b979650505050505050565b606083156200321157825160000362003209576001600160a01b0385163b620032095760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401620007f1565b508162000b86565b62000b868383815115620032285781518083602001fd5b8060405162461bcd60e51b8152600401620007f1919062003fca565b6119c78062003fe083390190565b6001600160a01b038116811462001b8857600080fd5b8035620032758162003252565b919050565b803563ffffffff811681146200327557600080fd5b60008083601f840112620032a257600080fd5b50813567ffffffffffffffff811115620032bb57600080fd5b602083019150836020828501011115620032d457600080fd5b9250929050565b60008060008060008060a08789031215620032f557600080fd5b8635620033028162003252565b955062003312602088016200327a565b94506040870135620033248162003252565b935060608701359250608087013567ffffffffffffffff8111156200334857600080fd5b6200335689828a016200328f565b979a9699509497509295939492505050565b600080604083850312156200337c57600080fd5b62003387836200327a565b91506020830135620033998162003252565b809150509250929050565b600060208284031215620033b757600080fd5b5035919050565b600060208284031215620033d157600080fd5b620033dc826200327a565b9392505050565b600060208284031215620033f657600080fd5b8135620033dc8162003252565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156200345e576200345e62003403565b604052919050565b600082601f8301126200347857600080fd5b8135602067ffffffffffffffff82111562003497576200349762003403565b8160051b620034a882820162003432565b9283528481018201928281019087851115620034c357600080fd5b83870192505b848310156200319257823582529183019190830190620034c9565b60008060008060808587031215620034fb57600080fd5b84359350602085013567ffffffffffffffff808211156200351b57600080fd5b620035298883890162003466565b94506040870135915080821682146200354157600080fd5b509396929550929360600135925050565b60ff8116811462001b8857600080fd5b600080600080600080600060e0888a0312156200357e57600080fd5b87356200358b8162003552565b96506200359b602089016200327a565b95506040880135620035ad8162003252565b9450620035bd606089016200327a565b93506080880135620035cf8162003252565b9699959850939692959460a0840135945060c09093013592915050565b600067ffffffffffffffff82111562003609576200360962003403565b50601f01601f191660200190565b600082601f8301126200362957600080fd5b8135620036406200363a82620035ec565b62003432565b8181528460208386010111156200365657600080fd5b816020850160208301376000918101602001919091529392505050565b6000806000806000806000806000806101408b8d0312156200369457600080fd5b8a3567ffffffffffffffff80821115620036ad57600080fd5b620036bb8e838f0162003466565b9b50620036cb60208e016200327a565b9a5060408d0135995060608d01359850620036e960808e016200327a565b9750620036f960a08e0162003268565b96506200370960c08e016200327a565b95506200371960e08e0162003268565b94506101008d013593506101208d01359150808211156200373957600080fd5b50620037488d828e0162003617565b9150509295989b9194979a5092959850565b600080600080608085870312156200377157600080fd5b6200377c856200327a565b935060208501356200378e8162003252565b92506040850135620037a08162003252565b9396929550929360600135925050565b600080600080600080600060a0888a031215620037cc57600080fd5b620037d7886200327a565b96506020880135620037e98162003252565b9550604088013567ffffffffffffffff808211156200380757600080fd5b620038158b838c016200328f565b909750955060608a01359150808211156200382f57600080fd5b506200383e8a828b016200328f565b9094509250506080880135620038548162003552565b8091505092959891949750929550565b6000806000606084860312156200387a57600080fd5b62003885846200327a565b92506020840135620038978162003252565b9150604084013567ffffffffffffffff811115620038b457600080fd5b620038c28682870162003617565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008262003961577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036200399a576200399a620038fb565b5060010190565b60005b83811015620039be578181015183820152602001620039a4565b83811115620030185750506000910152565b60008151808452620039ea816020860160208601620039a1565b601f01601f19169290920160200192915050565b6001600160a01b038416815263ffffffff8316602082015260606040820152600062003a2e6060830184620039d0565b95945050505050565b6000825162003a4b818460208701620039a1565b9190910192915050565b600082601f83011262003a6757600080fd5b815162003a786200363a82620035ec565b81815284602083860101111562003a8e57600080fd5b62000b86826020830160208701620039a1565b60008060006060848603121562003ab757600080fd5b835167ffffffffffffffff8082111562003ad057600080fd5b62003ade8783880162003a55565b9450602086015191508082111562003af557600080fd5b5062003b048682870162003a55565b925050604084015162003b178162003552565b809150509250925092565b60608152600062003b376060830186620039d0565b828103602084015262003b4b8186620039d0565b91505060ff83166040830152949350505050565b801515811462001b8857600080fd5b60006020828403121562003b8157600080fd5b8151620033dc8162003b5f565b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b60608152600062003bcf60608301878962003b8e565b828103602084015262003be481868862003b8e565b91505060ff831660408301529695505050505050565b6000835162003c0e818460208801620039a1565b83519083019062003c24818360208801620039a1565b01949350505050565b600061010060ff8b16835263ffffffff808b1660208501526001600160a01b03808b166040860152818a1660608601528089166080860152508660a08501528160c085015262003c8082850187620039d0565b925080851660e085015250509998505050505050505050565b60006020828403121562003cac57600080fd5b815167ffffffffffffffff81111562003cc457600080fd5b62000b868482850162003a55565b60006020828403121562003ce557600080fd5b8151620033dc8162003552565b60006020828403121562003d0557600080fd5b5051919050565b60008282101562003d215762003d21620038fb565b500390565b600181815b8085111562003d8557817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111562003d695762003d69620038fb565b8085161562003d7757918102915b93841c939080029062003d2b565b509250929050565b60008262003d9e5750600162000943565b8162003dad5750600062000943565b816001811462003dc6576002811462003dd15762003df1565b600191505062000943565b60ff84111562003de55762003de5620038fb565b50506001821b62000943565b5060208310610133831016604e8410600b841016171562003e16575081810a62000943565b62003e22838362003d26565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111562003e575762003e57620038fb565b029392505050565b6000620033dc838362003d8d565b6000821982111562003e835762003e83620038fb565b500190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b6000808585111562003ec857600080fd5b8386111562003ed657600080fd5b5050820193919092039150565b600080600080600080600060e0888a03121562003eff57600080fd5b873562003f0c8162003252565b9650602088013562003f1e8162003252565b955060408801359450606088013593506080880135620035cf8162003552565b600080600080600080600080610100898b03121562003f5c57600080fd5b883562003f698162003252565b9750602089013562003f7b8162003252565b96506040890135955060608901359450608089013562003f9b8162003b5f565b935060a089013562003fad8162003552565b979a969950949793969295929450505060c08201359160e0013590565b602081526000620033dc6020830184620039d056fe60c06040523480156200001157600080fd5b50604051620019c7380380620019c78339810160408190526200003491620002ad565b82826003620000448382620003c1565b506004620000538282620003c1565b5050600580546001600160a81b0319163360ff60a01b191617600160a01b60ff851602179055504660808190526200008b9062000098565b60a052506200048d915050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f620000c562000146565b805160209182012060408051808201825260018152603160f81b90840152805192830193909352918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060820152608081018390523060a082015260c001604051602081830303815290604052805190602001209050919050565b606060038054620001579062000332565b80601f0160208091040260200160405190810160405280929190818152602001828054620001859062000332565b8015620001d65780601f10620001aa57610100808354040283529160200191620001d6565b820191906000526020600020905b815481529060010190602001808311620001b857829003601f168201915b5050505050905090565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200020857600080fd5b81516001600160401b0380821115620002255762000225620001e0565b604051601f8301601f19908116603f01168101908282118183101715620002505762000250620001e0565b816040528381526020925086838588010111156200026d57600080fd5b600091505b8382101562000291578582018301518183018401529082019062000272565b83821115620002a35760008385830101525b9695505050505050565b600080600060608486031215620002c357600080fd5b83516001600160401b0380821115620002db57600080fd5b620002e987838801620001f6565b945060208601519150808211156200030057600080fd5b506200030f86828701620001f6565b925050604084015160ff811681146200032757600080fd5b809150509250925092565b600181811c908216806200034757607f821691505b6020821081036200036857634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620003bc57600081815260208120601f850160051c81016020861015620003975750805b601f850160051c820191505b81811015620003b857828155600101620003a3565b5050505b505050565b81516001600160401b03811115620003dd57620003dd620001e0565b620003f581620003ee845462000332565b846200036e565b602080601f8311600181146200042d5760008415620004145750858301515b600019600386901b1c1916600185901b178555620003b8565b600085815260208120601f198616915b828110156200045e578886015182559484019460019091019084016200043d565b50858210156200047d5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60805160a05161150d620004ba600039600061053001526000818161036f01526104fa015261150d6000f3fe608060405234801561001057600080fd5b50600436106101775760003560e01c806370a08231116100d8578063a457c2d71161008c578063d505accf11610066578063d505accf14610391578063dd62ed3e146103a6578063ffa1ad74146103ec57600080fd5b8063a457c2d714610344578063a9059cbb14610357578063cd0d00961461036a57600080fd5b806395d89b41116100bd57806395d89b41146102e45780639dc29fac146102ec578063a3c573eb146102ff57600080fd5b806370a082311461028e5780637ecebe00146102c457600080fd5b806330adf81f1161012f5780633644e515116101145780633644e51514610260578063395093511461026857806340c10f191461027b57600080fd5b806330adf81f14610209578063313ce5671461023057600080fd5b806318160ddd1161016057806318160ddd146101bd57806320606b70146101cf57806323b872dd146101f657600080fd5b806306fdde031461017c578063095ea7b31461019a575b600080fd5b610184610428565b604051610191919061123b565b60405180910390f35b6101ad6101a83660046112d7565b6104ba565b6040519015158152602001610191565b6002545b604051908152602001610191565b6101c17f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81565b6101ad610204366004611301565b6104d2565b6101c17f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b60055474010000000000000000000000000000000000000000900460ff1660405160ff9091168152602001610191565b6101c16104f6565b6101ad6102763660046112d7565b610552565b6101ad6102893660046112d7565b61059e565b6101c161029c36600461133d565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6101c16102d236600461133d565b60066020526000908152604090205481565b610184610645565b6101ad6102fa3660046112d7565b610654565b60055461031f9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610191565b6101ad6103523660046112d7565b6106ed565b6101ad6103653660046112d7565b6107a4565b6101c17f000000000000000000000000000000000000000000000000000000000000000081565b6103a461039f36600461135f565b6107b2565b005b6101c16103b43660046113d2565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6101846040518060400160405280600181526020017f310000000000000000000000000000000000000000000000000000000000000081525081565b60606003805461043790611405565b80601f016020809104026020016040519081016040528092919081815260200182805461046390611405565b80156104b05780601f10610485576101008083540402835291602001916104b0565b820191906000526020600020905b81548152906001019060200180831161049357829003601f168201915b5050505050905090565b6000336104c8818585610ab4565b5060019392505050565b6000336104e0858285610c34565b6104eb858585610cf1565b506001949350505050565b60007f0000000000000000000000000000000000000000000000000000000000000000461461052d5761052846610f12565b905090565b507f000000000000000000000000000000000000000000000000000000000000000090565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906104c89082908690610599908790611487565b610ab4565b60055460009073ffffffffffffffffffffffffffffffffffffffff1633146106325760405162461bcd60e51b8152602060048201526024808201527f546f6b656e577261707065643a3a6f6e6c794272696467653a204e4f545f425260448201527f494447450000000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b61063c8383610fda565b50600192915050565b60606004805461043790611405565b60055460009073ffffffffffffffffffffffffffffffffffffffff1633146106e35760405162461bcd60e51b8152602060048201526024808201527f546f6b656e577261707065643a3a6f6e6c794272696467653a204e4f545f425260448201527f49444745000000000000000000000000000000000000000000000000000000006064820152608401610629565b61063c83836110b3565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190838110156107975760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f0000000000000000000000000000000000000000000000000000006064820152608401610629565b6104eb8286868403610ab4565b6000336104c8818585610cf1565b834211156108275760405162461bcd60e51b8152602060048201526024808201527f546f6b656e577261707065643a3a7065726d69743a204578706972656420706560448201527f726d6974000000000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff8716600090815260066020526040812080547f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918a918a918a9190866108818361149f565b9091555060408051602081019690965273ffffffffffffffffffffffffffffffffffffffff94851690860152929091166060840152608083015260a082015260c0810186905260e00160405160208183030381529060405280519060200120905060006108ec6104f6565b6040517f19010000000000000000000000000000000000000000000000000000000000006020820152602281019190915260428101839052606201604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282528051602091820120600080855291840180845281905260ff89169284019290925260608301879052608083018690529092509060019060a0016020604051602081039080840390855afa1580156109b0573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811615801590610a2b57508973ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b610a9d5760405162461bcd60e51b815260206004820152602760248201527f546f6b656e577261707065643a3a7065726d69743a20496e76616c696420736960448201527f676e6174757265000000000000000000000000000000000000000000000000006064820152608401610629565b610aa88a8a8a610ab4565b50505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff8316610b3c5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff8216610bc55760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610ceb5781811015610cde5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610629565b610ceb8484848403610ab4565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610d7a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff8216610e035760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610e9f5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610ceb565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f610f3d610428565b8051602091820120604080518082018252600181527f310000000000000000000000000000000000000000000000000000000000000090840152805192830193909352918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060820152608081018390523060a082015260c001604051602081830303815290604052805190602001209050919050565b73ffffffffffffffffffffffffffffffffffffffff821661103d5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610629565b806002600082825461104f9190611487565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b73ffffffffffffffffffffffffffffffffffffffff821661113c5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260208190526040902054818110156111d85760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f63650000000000000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff83166000818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101610c27565b600060208083528351808285015260005b818110156112685785810183015185820160400152820161124c565b8181111561127a576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146112d257600080fd5b919050565b600080604083850312156112ea57600080fd5b6112f3836112ae565b946020939093013593505050565b60008060006060848603121561131657600080fd5b61131f846112ae565b925061132d602085016112ae565b9150604084013590509250925092565b60006020828403121561134f57600080fd5b611358826112ae565b9392505050565b600080600080600080600060e0888a03121561137a57600080fd5b611383886112ae565b9650611391602089016112ae565b95506040880135945060608801359350608088013560ff811681146113b557600080fd5b9699959850939692959460a0840135945060c09093013592915050565b600080604083850312156113e557600080fd5b6113ee836112ae565b91506113fc602084016112ae565b90509250929050565b600181811c9082168061141957607f821691505b602082108103611452577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000821982111561149a5761149a611458565b500190565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036114d0576114d0611458565b506001019056fea264697066735822122094134962e5fa2f6357086a2590b7f3a754d340b16e5312664d82a308bc23a0df64736f6c634300080f0033a2646970667358221220fa289e5d6107b7c3d0d8121dac9d073a816dd5186ba86cef1d20063f64fac49864736f6c634300080f0033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/compiled-contracts/ERC20PermitMock.json b/compiled-contracts/ERC20PermitMock.json index 9514a4230..7c0d2b30b 100644 --- a/compiled-contracts/ERC20PermitMock.json +++ b/compiled-contracts/ERC20PermitMock.json @@ -517,8 +517,8 @@ "type": "function" } ], - "bytecode": "0x6080604052604051620018923803806200189283398101604081905262000026916200022b565b838360036200003683826200034c565b5060046200004582826200034c565b5050506200005a82826200007160201b60201c565b50508151602090920191909120600655506200043f565b6001600160a01b038216620000cc5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b8060026000828254620000e0919062000418565b90915550506001600160a01b038216600090815260208190526040812080548392906200010f90849062000418565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b505050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200018657600080fd5b81516001600160401b0380821115620001a357620001a36200015e565b604051601f8301601f19908116603f01168101908282118183101715620001ce57620001ce6200015e565b81604052838152602092508683858801011115620001eb57600080fd5b600091505b838210156200020f5785820183015181830184015290820190620001f0565b83821115620002215760008385830101525b9695505050505050565b600080600080608085870312156200024257600080fd5b84516001600160401b03808211156200025a57600080fd5b620002688883890162000174565b955060208701519150808211156200027f57600080fd5b506200028e8782880162000174565b604087015190945090506001600160a01b0381168114620002ae57600080fd5b6060959095015193969295505050565b600181811c90821680620002d357607f821691505b602082108103620002f457634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200015957600081815260208120601f850160051c81016020861015620003235750805b601f850160051c820191505b8181101562000344578281556001016200032f565b505050505050565b81516001600160401b038111156200036857620003686200015e565b6200038081620003798454620002be565b84620002fa565b602080601f831160018114620003b857600084156200039f5750858301515b600019600386901b1c1916600185901b17855562000344565b600085815260208120601f198616915b82811015620003e957888601518255948401946001909101908401620003c8565b5085821015620004085787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600082198211156200043a57634e487b7160e01b600052601160045260246000fd5b500190565b611443806200044f6000396000f3fe608060405234801561001057600080fd5b506004361061018d5760003560e01c806340c10f19116100e35780639e4e73181161008c578063c473af3311610066578063c473af33146103d6578063d505accf146103fd578063dd62ed3e1461041057600080fd5b80639e4e731814610389578063a457c2d7146103b0578063a9059cbb146103c357600080fd5b806370a08231116100bd57806370a082311461032b5780637ecebe001461036157806395d89b411461038157600080fd5b806340c10f19146102f257806342966c681461030557806356189cb41461031857600080fd5b806323b872dd116101455780633408e4701161011f5780633408e4701461024c5780633644e5151461025257806339509351146102df57600080fd5b806323b872dd1461020357806330adf81f14610216578063313ce5671461023d57600080fd5b8063095ea7b311610176578063095ea7b3146101c357806318160ddd146101e6578063222f5be0146101ee57600080fd5b806304622c2e1461019257806306fdde03146101ae575b600080fd5b61019b60065481565b6040519081526020015b60405180910390f35b6101b6610456565b6040516101a59190611141565b6101d66101d13660046111dd565b6104e8565b60405190151581526020016101a5565b60025461019b565b6102016101fc366004611207565b610500565b005b6101d6610211366004611207565b610510565b61019b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b604051601281526020016101a5565b4661019b565b61019b6006546000907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f907fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc646604080516020810195909552840192909252606083015260808201523060a082015260c00160405160208183030381529060405280519060200120905090565b6101d66102ed3660046111dd565b610534565b6102016103003660046111dd565b610580565b610201610313366004611243565b61058e565b610201610326366004611207565b61059b565b61019b61033936600461125c565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b61019b61036f36600461125c565b60056020526000908152604090205481565b6101b66105a6565b61019b7fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc681565b6101d66103be3660046111dd565b6105b5565b6101d66103d13660046111dd565b610671565b61019b7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81565b61020161040b36600461127e565b61067f565b61019b61041e3660046112f1565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b60606003805461046590611324565b80601f016020809104026020016040519081016040528092919081815260200182805461049190611324565b80156104de5780601f106104b3576101008083540402835291602001916104de565b820191906000526020600020905b8154815290600101906020018083116104c157829003601f168201915b5050505050905090565b6000336104f68185856107ac565b5060019392505050565b61050b83838361092b565b505050565b60003361051e858285610b92565b61052985858561092b565b506001949350505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906104f6908290869061057b9087906113a6565b6107ac565b61058a8282610c49565b5050565b6105983382610d4f565b50565b61050b8383836107ac565b60606004805461046590611324565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190838110156106645760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b61052982868684036107ac565b6000336104f681858561092b565b428410156106cf5760405162461bcd60e51b815260206004820152601960248201527f48455a3a3a7065726d69743a20415554485f4558504952454400000000000000604482015260640161065b565b73ffffffffffffffffffffffffffffffffffffffff8716600090815260056020526040812080547f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918a918a918a919086610729836113be565b9091555060408051602081019690965273ffffffffffffffffffffffffffffffffffffffff94851690860152929091166060840152608083015260a082015260c0810186905260e0016040516020818303038152906040528051906020012090506107978882868686610f08565b6107a28888886107ac565b5050505050505050565b73ffffffffffffffffffffffffffffffffffffffff83166108345760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f7265737300000000000000000000000000000000000000000000000000000000606482015260840161065b565b73ffffffffffffffffffffffffffffffffffffffff82166108bd5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f7373000000000000000000000000000000000000000000000000000000000000606482015260840161065b565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff83166109b45760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f6472657373000000000000000000000000000000000000000000000000000000606482015260840161065b565b73ffffffffffffffffffffffffffffffffffffffff8216610a3d5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f6573730000000000000000000000000000000000000000000000000000000000606482015260840161065b565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610ad95760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e63650000000000000000000000000000000000000000000000000000606482015260840161065b565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260208190526040808220858503905591851681529081208054849290610b1d9084906113a6565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610b8391815260200190565b60405180910390a35b50505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610b8c5781811015610c3c5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161065b565b610b8c84848484036107ac565b73ffffffffffffffffffffffffffffffffffffffff8216610cac5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640161065b565b8060026000828254610cbe91906113a6565b909155505073ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604081208054839290610cf89084906113a6565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b73ffffffffffffffffffffffffffffffffffffffff8216610dd85760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f7300000000000000000000000000000000000000000000000000000000000000606482015260840161065b565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090205481811015610e745760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f6365000000000000000000000000000000000000000000000000000000000000606482015260840161065b565b73ffffffffffffffffffffffffffffffffffffffff83166000908152602081905260408120838303905560028054849290610eb09084906113f6565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b600654604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f602080830191909152818301939093527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a0808301919091528251808303909101815260c08201909252815191909201207f190100000000000000000000000000000000000000000000000000000000000060e083015260e2820181905261010282018690529060009061012201604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282528051602091820120600080855291840180845281905260ff89169284019290925260608301879052608083018690529092509060019060a0016020604051602081039080840390855afa158015611054573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff8116158015906110cf57508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b6107a25760405162461bcd60e51b815260206004820152602b60248201527f48455a3a3a5f76616c69646174655369676e6564446174613a20494e56414c4960448201527f445f5349474e4154555245000000000000000000000000000000000000000000606482015260840161065b565b600060208083528351808285015260005b8181101561116e57858101830151858201604001528201611152565b81811115611180576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146111d857600080fd5b919050565b600080604083850312156111f057600080fd5b6111f9836111b4565b946020939093013593505050565b60008060006060848603121561121c57600080fd5b611225846111b4565b9250611233602085016111b4565b9150604084013590509250925092565b60006020828403121561125557600080fd5b5035919050565b60006020828403121561126e57600080fd5b611277826111b4565b9392505050565b600080600080600080600060e0888a03121561129957600080fd5b6112a2886111b4565b96506112b0602089016111b4565b95506040880135945060608801359350608088013560ff811681146112d457600080fd5b9699959850939692959460a0840135945060c09093013592915050565b6000806040838503121561130457600080fd5b61130d836111b4565b915061131b602084016111b4565b90509250929050565b600181811c9082168061133857607f821691505b602082108103611371577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082198211156113b9576113b9611377565b500190565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036113ef576113ef611377565b5060010190565b60008282101561140857611408611377565b50039056fea2646970667358221220fca20729a90e81ceeeaa5285d72846fd512c992192630ec1c849572ca45c3ec264736f6c634300080f0033", - "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061018d5760003560e01c806340c10f19116100e35780639e4e73181161008c578063c473af3311610066578063c473af33146103d6578063d505accf146103fd578063dd62ed3e1461041057600080fd5b80639e4e731814610389578063a457c2d7146103b0578063a9059cbb146103c357600080fd5b806370a08231116100bd57806370a082311461032b5780637ecebe001461036157806395d89b411461038157600080fd5b806340c10f19146102f257806342966c681461030557806356189cb41461031857600080fd5b806323b872dd116101455780633408e4701161011f5780633408e4701461024c5780633644e5151461025257806339509351146102df57600080fd5b806323b872dd1461020357806330adf81f14610216578063313ce5671461023d57600080fd5b8063095ea7b311610176578063095ea7b3146101c357806318160ddd146101e6578063222f5be0146101ee57600080fd5b806304622c2e1461019257806306fdde03146101ae575b600080fd5b61019b60065481565b6040519081526020015b60405180910390f35b6101b6610456565b6040516101a59190611141565b6101d66101d13660046111dd565b6104e8565b60405190151581526020016101a5565b60025461019b565b6102016101fc366004611207565b610500565b005b6101d6610211366004611207565b610510565b61019b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b604051601281526020016101a5565b4661019b565b61019b6006546000907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f907fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc646604080516020810195909552840192909252606083015260808201523060a082015260c00160405160208183030381529060405280519060200120905090565b6101d66102ed3660046111dd565b610534565b6102016103003660046111dd565b610580565b610201610313366004611243565b61058e565b610201610326366004611207565b61059b565b61019b61033936600461125c565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b61019b61036f36600461125c565b60056020526000908152604090205481565b6101b66105a6565b61019b7fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc681565b6101d66103be3660046111dd565b6105b5565b6101d66103d13660046111dd565b610671565b61019b7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81565b61020161040b36600461127e565b61067f565b61019b61041e3660046112f1565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b60606003805461046590611324565b80601f016020809104026020016040519081016040528092919081815260200182805461049190611324565b80156104de5780601f106104b3576101008083540402835291602001916104de565b820191906000526020600020905b8154815290600101906020018083116104c157829003601f168201915b5050505050905090565b6000336104f68185856107ac565b5060019392505050565b61050b83838361092b565b505050565b60003361051e858285610b92565b61052985858561092b565b506001949350505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906104f6908290869061057b9087906113a6565b6107ac565b61058a8282610c49565b5050565b6105983382610d4f565b50565b61050b8383836107ac565b60606004805461046590611324565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190838110156106645760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b61052982868684036107ac565b6000336104f681858561092b565b428410156106cf5760405162461bcd60e51b815260206004820152601960248201527f48455a3a3a7065726d69743a20415554485f4558504952454400000000000000604482015260640161065b565b73ffffffffffffffffffffffffffffffffffffffff8716600090815260056020526040812080547f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918a918a918a919086610729836113be565b9091555060408051602081019690965273ffffffffffffffffffffffffffffffffffffffff94851690860152929091166060840152608083015260a082015260c0810186905260e0016040516020818303038152906040528051906020012090506107978882868686610f08565b6107a28888886107ac565b5050505050505050565b73ffffffffffffffffffffffffffffffffffffffff83166108345760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f7265737300000000000000000000000000000000000000000000000000000000606482015260840161065b565b73ffffffffffffffffffffffffffffffffffffffff82166108bd5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f7373000000000000000000000000000000000000000000000000000000000000606482015260840161065b565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff83166109b45760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f6472657373000000000000000000000000000000000000000000000000000000606482015260840161065b565b73ffffffffffffffffffffffffffffffffffffffff8216610a3d5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f6573730000000000000000000000000000000000000000000000000000000000606482015260840161065b565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610ad95760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e63650000000000000000000000000000000000000000000000000000606482015260840161065b565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260208190526040808220858503905591851681529081208054849290610b1d9084906113a6565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610b8391815260200190565b60405180910390a35b50505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610b8c5781811015610c3c5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161065b565b610b8c84848484036107ac565b73ffffffffffffffffffffffffffffffffffffffff8216610cac5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640161065b565b8060026000828254610cbe91906113a6565b909155505073ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604081208054839290610cf89084906113a6565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b73ffffffffffffffffffffffffffffffffffffffff8216610dd85760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f7300000000000000000000000000000000000000000000000000000000000000606482015260840161065b565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090205481811015610e745760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f6365000000000000000000000000000000000000000000000000000000000000606482015260840161065b565b73ffffffffffffffffffffffffffffffffffffffff83166000908152602081905260408120838303905560028054849290610eb09084906113f6565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b600654604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f602080830191909152818301939093527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a0808301919091528251808303909101815260c08201909252815191909201207f190100000000000000000000000000000000000000000000000000000000000060e083015260e2820181905261010282018690529060009061012201604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282528051602091820120600080855291840180845281905260ff89169284019290925260608301879052608083018690529092509060019060a0016020604051602081039080840390855afa158015611054573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff8116158015906110cf57508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b6107a25760405162461bcd60e51b815260206004820152602b60248201527f48455a3a3a5f76616c69646174655369676e6564446174613a20494e56414c4960448201527f445f5349474e4154555245000000000000000000000000000000000000000000606482015260840161065b565b600060208083528351808285015260005b8181101561116e57858101830151858201604001528201611152565b81811115611180576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146111d857600080fd5b919050565b600080604083850312156111f057600080fd5b6111f9836111b4565b946020939093013593505050565b60008060006060848603121561121c57600080fd5b611225846111b4565b9250611233602085016111b4565b9150604084013590509250925092565b60006020828403121561125557600080fd5b5035919050565b60006020828403121561126e57600080fd5b611277826111b4565b9392505050565b600080600080600080600060e0888a03121561129957600080fd5b6112a2886111b4565b96506112b0602089016111b4565b95506040880135945060608801359350608088013560ff811681146112d457600080fd5b9699959850939692959460a0840135945060c09093013592915050565b6000806040838503121561130457600080fd5b61130d836111b4565b915061131b602084016111b4565b90509250929050565b600181811c9082168061133857607f821691505b602082108103611371577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600082198211156113b9576113b9611377565b500190565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036113ef576113ef611377565b5060010190565b60008282101561140857611408611377565b50039056fea2646970667358221220fca20729a90e81ceeeaa5285d72846fd512c992192630ec1c849572ca45c3ec264736f6c634300080f0033", + "bytecode": "0x6080604052604051620017bf380380620017bf833981016040819052620000269162000209565b838360036200003683826200032a565b5060046200004582826200032a565b5050506200005a82826200007160201b60201c565b50508151602090920191909120600655506200041d565b6001600160a01b038216620000cc5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b8060026000828254620000e09190620003f6565b90915550506001600160a01b038216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b505050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200016457600080fd5b81516001600160401b03808211156200018157620001816200013c565b604051601f8301601f19908116603f01168101908282118183101715620001ac57620001ac6200013c565b81604052838152602092508683858801011115620001c957600080fd5b600091505b83821015620001ed5785820183015181830184015290820190620001ce565b83821115620001ff5760008385830101525b9695505050505050565b600080600080608085870312156200022057600080fd5b84516001600160401b03808211156200023857600080fd5b620002468883890162000152565b955060208701519150808211156200025d57600080fd5b506200026c8782880162000152565b604087015190945090506001600160a01b03811681146200028c57600080fd5b6060959095015193969295505050565b600181811c90821680620002b157607f821691505b602082108103620002d257634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200013757600081815260208120601f850160051c81016020861015620003015750805b601f850160051c820191505b8181101562000322578281556001016200030d565b505050505050565b81516001600160401b038111156200034657620003466200013c565b6200035e816200035784546200029c565b84620002d8565b602080601f8311600181146200039657600084156200037d5750858301515b600019600386901b1c1916600185901b17855562000322565b600085815260208120601f198616915b82811015620003c757888601518255948401946001909101908401620003a6565b5085821015620003e65787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600082198211156200041857634e487b7160e01b600052601160045260246000fd5b500190565b611392806200042d6000396000f3fe608060405234801561001057600080fd5b506004361061018d5760003560e01c806340c10f19116100e35780639e4e73181161008c578063c473af3311610066578063c473af33146103d6578063d505accf146103fd578063dd62ed3e1461041057600080fd5b80639e4e731814610389578063a457c2d7146103b0578063a9059cbb146103c357600080fd5b806370a08231116100bd57806370a082311461032b5780637ecebe001461036157806395d89b411461038157600080fd5b806340c10f19146102f257806342966c681461030557806356189cb41461031857600080fd5b806323b872dd116101455780633408e4701161011f5780633408e4701461024c5780633644e5151461025257806339509351146102df57600080fd5b806323b872dd1461020357806330adf81f14610216578063313ce5671461023d57600080fd5b8063095ea7b311610176578063095ea7b3146101c357806318160ddd146101e6578063222f5be0146101ee57600080fd5b806304622c2e1461019257806306fdde03146101ae575b600080fd5b61019b60065481565b6040519081526020015b60405180910390f35b6101b6610456565b6040516101a591906110a7565b6101d66101d1366004611143565b6104e8565b60405190151581526020016101a5565b60025461019b565b6102016101fc36600461116d565b610500565b005b6101d661021136600461116d565b610510565b61019b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b604051601281526020016101a5565b4661019b565b61019b6006546000907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f907fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc646604080516020810195909552840192909252606083015260808201523060a082015260c00160405160208183030381529060405280519060200120905090565b6101d66102ed366004611143565b610534565b610201610300366004611143565b610580565b6102016103133660046111a9565b61058e565b61020161032636600461116d565b61059b565b61019b6103393660046111c2565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b61019b61036f3660046111c2565b60056020526000908152604090205481565b6101b66105a6565b61019b7fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc681565b6101d66103be366004611143565b6105b5565b6101d66103d1366004611143565b610671565b61019b7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81565b61020161040b3660046111e4565b61067f565b61019b61041e366004611257565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546104659061128a565b80601f01602080910402602001604051908101604052809291908181526020018280546104919061128a565b80156104de5780601f106104b3576101008083540402835291602001916104de565b820191906000526020600020905b8154815290600101906020018083116104c157829003601f168201915b5050505050905090565b6000336104f68185856107ac565b5060019392505050565b61050b83838361092b565b505050565b60003361051e858285610b4e565b61052985858561092b565b506001949350505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906104f6908290869061057b90879061130c565b6107ac565b61058a8282610c05565b5050565b6105983382610cde565b50565b61050b8383836107ac565b6060600480546104659061128a565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190838110156106645760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b61052982868684036107ac565b6000336104f681858561092b565b428410156106cf5760405162461bcd60e51b815260206004820152601960248201527f48455a3a3a7065726d69743a20415554485f4558504952454400000000000000604482015260640161065b565b73ffffffffffffffffffffffffffffffffffffffff8716600090815260056020526040812080547f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918a918a918a91908661072983611324565b9091555060408051602081019690965273ffffffffffffffffffffffffffffffffffffffff94851690860152929091166060840152608083015260a082015260c0810186905260e0016040516020818303038152906040528051906020012090506107978882868686610e6e565b6107a28888886107ac565b5050505050505050565b73ffffffffffffffffffffffffffffffffffffffff83166108345760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f7265737300000000000000000000000000000000000000000000000000000000606482015260840161065b565b73ffffffffffffffffffffffffffffffffffffffff82166108bd5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f7373000000000000000000000000000000000000000000000000000000000000606482015260840161065b565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff83166109b45760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f6472657373000000000000000000000000000000000000000000000000000000606482015260840161065b565b73ffffffffffffffffffffffffffffffffffffffff8216610a3d5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f6573730000000000000000000000000000000000000000000000000000000000606482015260840161065b565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610ad95760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e63650000000000000000000000000000000000000000000000000000606482015260840161065b565b73ffffffffffffffffffffffffffffffffffffffff848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35b50505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610b485781811015610bf85760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161065b565b610b4884848484036107ac565b73ffffffffffffffffffffffffffffffffffffffff8216610c685760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640161065b565b8060026000828254610c7a919061130c565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b73ffffffffffffffffffffffffffffffffffffffff8216610d675760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f7300000000000000000000000000000000000000000000000000000000000000606482015260840161065b565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090205481811015610e035760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f6365000000000000000000000000000000000000000000000000000000000000606482015260840161065b565b73ffffffffffffffffffffffffffffffffffffffff83166000818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b600654604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f602080830191909152818301939093527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a0808301919091528251808303909101815260c08201909252815191909201207f190100000000000000000000000000000000000000000000000000000000000060e083015260e2820181905261010282018690529060009061012201604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282528051602091820120600080855291840180845281905260ff89169284019290925260608301879052608083018690529092509060019060a0016020604051602081039080840390855afa158015610fba573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff81161580159061103557508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b6107a25760405162461bcd60e51b815260206004820152602b60248201527f48455a3a3a5f76616c69646174655369676e6564446174613a20494e56414c4960448201527f445f5349474e4154555245000000000000000000000000000000000000000000606482015260840161065b565b600060208083528351808285015260005b818110156110d4578581018301518582016040015282016110b8565b818111156110e6576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461113e57600080fd5b919050565b6000806040838503121561115657600080fd5b61115f8361111a565b946020939093013593505050565b60008060006060848603121561118257600080fd5b61118b8461111a565b92506111996020850161111a565b9150604084013590509250925092565b6000602082840312156111bb57600080fd5b5035919050565b6000602082840312156111d457600080fd5b6111dd8261111a565b9392505050565b600080600080600080600060e0888a0312156111ff57600080fd5b6112088861111a565b96506112166020890161111a565b95506040880135945060608801359350608088013560ff8116811461123a57600080fd5b9699959850939692959460a0840135945060c09093013592915050565b6000806040838503121561126a57600080fd5b6112738361111a565b91506112816020840161111a565b90509250929050565b600181811c9082168061129e57607f821691505b6020821081036112d7577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000821982111561131f5761131f6112dd565b500190565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611355576113556112dd565b506001019056fea2646970667358221220bf0b7db976f560dd85f7767838a1135c53a57d85ccd2df4b815db0784342a3dc64736f6c634300080f0033", + "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061018d5760003560e01c806340c10f19116100e35780639e4e73181161008c578063c473af3311610066578063c473af33146103d6578063d505accf146103fd578063dd62ed3e1461041057600080fd5b80639e4e731814610389578063a457c2d7146103b0578063a9059cbb146103c357600080fd5b806370a08231116100bd57806370a082311461032b5780637ecebe001461036157806395d89b411461038157600080fd5b806340c10f19146102f257806342966c681461030557806356189cb41461031857600080fd5b806323b872dd116101455780633408e4701161011f5780633408e4701461024c5780633644e5151461025257806339509351146102df57600080fd5b806323b872dd1461020357806330adf81f14610216578063313ce5671461023d57600080fd5b8063095ea7b311610176578063095ea7b3146101c357806318160ddd146101e6578063222f5be0146101ee57600080fd5b806304622c2e1461019257806306fdde03146101ae575b600080fd5b61019b60065481565b6040519081526020015b60405180910390f35b6101b6610456565b6040516101a591906110a7565b6101d66101d1366004611143565b6104e8565b60405190151581526020016101a5565b60025461019b565b6102016101fc36600461116d565b610500565b005b6101d661021136600461116d565b610510565b61019b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b604051601281526020016101a5565b4661019b565b61019b6006546000907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f907fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc646604080516020810195909552840192909252606083015260808201523060a082015260c00160405160208183030381529060405280519060200120905090565b6101d66102ed366004611143565b610534565b610201610300366004611143565b610580565b6102016103133660046111a9565b61058e565b61020161032636600461116d565b61059b565b61019b6103393660046111c2565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b61019b61036f3660046111c2565b60056020526000908152604090205481565b6101b66105a6565b61019b7fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc681565b6101d66103be366004611143565b6105b5565b6101d66103d1366004611143565b610671565b61019b7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81565b61020161040b3660046111e4565b61067f565b61019b61041e366004611257565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6060600380546104659061128a565b80601f01602080910402602001604051908101604052809291908181526020018280546104919061128a565b80156104de5780601f106104b3576101008083540402835291602001916104de565b820191906000526020600020905b8154815290600101906020018083116104c157829003601f168201915b5050505050905090565b6000336104f68185856107ac565b5060019392505050565b61050b83838361092b565b505050565b60003361051e858285610b4e565b61052985858561092b565b506001949350505050565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906104f6908290869061057b90879061130c565b6107ac565b61058a8282610c05565b5050565b6105983382610cde565b50565b61050b8383836107ac565b6060600480546104659061128a565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190838110156106645760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b61052982868684036107ac565b6000336104f681858561092b565b428410156106cf5760405162461bcd60e51b815260206004820152601960248201527f48455a3a3a7065726d69743a20415554485f4558504952454400000000000000604482015260640161065b565b73ffffffffffffffffffffffffffffffffffffffff8716600090815260056020526040812080547f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918a918a918a91908661072983611324565b9091555060408051602081019690965273ffffffffffffffffffffffffffffffffffffffff94851690860152929091166060840152608083015260a082015260c0810186905260e0016040516020818303038152906040528051906020012090506107978882868686610e6e565b6107a28888886107ac565b5050505050505050565b73ffffffffffffffffffffffffffffffffffffffff83166108345760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f7265737300000000000000000000000000000000000000000000000000000000606482015260840161065b565b73ffffffffffffffffffffffffffffffffffffffff82166108bd5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f7373000000000000000000000000000000000000000000000000000000000000606482015260840161065b565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff83166109b45760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f6472657373000000000000000000000000000000000000000000000000000000606482015260840161065b565b73ffffffffffffffffffffffffffffffffffffffff8216610a3d5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f6573730000000000000000000000000000000000000000000000000000000000606482015260840161065b565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610ad95760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e63650000000000000000000000000000000000000000000000000000606482015260840161065b565b73ffffffffffffffffffffffffffffffffffffffff848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35b50505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610b485781811015610bf85760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161065b565b610b4884848484036107ac565b73ffffffffffffffffffffffffffffffffffffffff8216610c685760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640161065b565b8060026000828254610c7a919061130c565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b73ffffffffffffffffffffffffffffffffffffffff8216610d675760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f7300000000000000000000000000000000000000000000000000000000000000606482015260840161065b565b73ffffffffffffffffffffffffffffffffffffffff821660009081526020819052604090205481811015610e035760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f6365000000000000000000000000000000000000000000000000000000000000606482015260840161065b565b73ffffffffffffffffffffffffffffffffffffffff83166000818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b600654604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f602080830191909152818301939093527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a0808301919091528251808303909101815260c08201909252815191909201207f190100000000000000000000000000000000000000000000000000000000000060e083015260e2820181905261010282018690529060009061012201604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282528051602091820120600080855291840180845281905260ff89169284019290925260608301879052608083018690529092509060019060a0016020604051602081039080840390855afa158015610fba573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff81161580159061103557508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b6107a25760405162461bcd60e51b815260206004820152602b60248201527f48455a3a3a5f76616c69646174655369676e6564446174613a20494e56414c4960448201527f445f5349474e4154555245000000000000000000000000000000000000000000606482015260840161065b565b600060208083528351808285015260005b818110156110d4578581018301518582016040015282016110b8565b818111156110e6576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461113e57600080fd5b919050565b6000806040838503121561115657600080fd5b61115f8361111a565b946020939093013593505050565b60008060006060848603121561118257600080fd5b61118b8461111a565b92506111996020850161111a565b9150604084013590509250925092565b6000602082840312156111bb57600080fd5b5035919050565b6000602082840312156111d457600080fd5b6111dd8261111a565b9392505050565b600080600080600080600060e0888a0312156111ff57600080fd5b6112088861111a565b96506112166020890161111a565b95506040880135945060608801359350608088013560ff8116811461123a57600080fd5b9699959850939692959460a0840135945060c09093013592915050565b6000806040838503121561126a57600080fd5b6112738361111a565b91506112816020840161111a565b90509250929050565b600181811c9082168061129e57607f821691505b6020821081036112d7577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000821982111561131f5761131f6112dd565b500190565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611355576113556112dd565b506001019056fea2646970667358221220bf0b7db976f560dd85f7767838a1135c53a57d85ccd2df4b815db0784342a3dc64736f6c634300080f0033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/compiled-contracts/GlobalExitRootManager.json b/compiled-contracts/GlobalExitRootManager.json index 4338fecb3..79803eb35 100644 --- a/compiled-contracts/GlobalExitRootManager.json +++ b/compiled-contracts/GlobalExitRootManager.json @@ -151,8 +151,8 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b506105ce806100206000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c80633ed691ef1161005b5780633ed691ef146100e7578063485cc955146101205780635ec6a8df14610133578063a3c573eb1461017857600080fd5b806301fd90441461008d578063257b3632146100a9578063319cf735146100c957806333d6247d146100d2575b600080fd5b61009660015481565b6040519081526020015b60405180910390f35b6100966100b7366004610523565b60036020526000908152604090205481565b61009660025481565b6100e56100e0366004610523565b610198565b005b61009660025460015460408051602081019390935282015260009060600160405160208183030381529060405280519060200120905090565b6100e561012e366004610565565b610342565b6005546101539073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100a0565b6004546101539073ffffffffffffffffffffffffffffffffffffffff1681565b60055473ffffffffffffffffffffffffffffffffffffffff163314806101d5575060045473ffffffffffffffffffffffffffffffffffffffff1633145b610266576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603d60248201527f476c6f62616c45786974526f6f744d616e616765723a3a75706461746545786960448201527f74526f6f743a204f4e4c595f414c4c4f5745445f434f4e54524143545300000060648201526084015b60405180910390fd5b60055473ffffffffffffffffffffffffffffffffffffffff16330361028b5760018190555b60045473ffffffffffffffffffffffffffffffffffffffff1633036102b05760028190555b600254600154604080516020810193909352820152600090606001604051602081830303815290604052805190602001209050600360008281526020019081526020016000205460000361033e57600081815260036020526040808220429055600154600254915190927f61014378f82a0d809aefaf87a8ac9505b89c321808287a6e7810f29304c1fce391a35b5050565b600054610100900460ff16158080156103625750600054600160ff909116105b8061037c5750303b15801561037c575060005460ff166001145b610408576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a6564000000000000000000000000000000000000606482015260840161025d565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561046657600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6005805473ffffffffffffffffffffffffffffffffffffffff8086167fffffffffffffffffffffffff0000000000000000000000000000000000000000928316179092556004805492851692909116919091179055801561051e57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b60006020828403121561053557600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461056057600080fd5b919050565b6000806040838503121561057857600080fd5b6105818361053c565b915061058f6020840161053c565b9050925092905056fea2646970667358221220423e83d388a63ed7ac53287c741e2b54c7d39b0614d1fb089d983befe87d324564736f6c634300080f0033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100885760003560e01c80633ed691ef1161005b5780633ed691ef146100e7578063485cc955146101205780635ec6a8df14610133578063a3c573eb1461017857600080fd5b806301fd90441461008d578063257b3632146100a9578063319cf735146100c957806333d6247d146100d2575b600080fd5b61009660015481565b6040519081526020015b60405180910390f35b6100966100b7366004610523565b60036020526000908152604090205481565b61009660025481565b6100e56100e0366004610523565b610198565b005b61009660025460015460408051602081019390935282015260009060600160405160208183030381529060405280519060200120905090565b6100e561012e366004610565565b610342565b6005546101539073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100a0565b6004546101539073ffffffffffffffffffffffffffffffffffffffff1681565b60055473ffffffffffffffffffffffffffffffffffffffff163314806101d5575060045473ffffffffffffffffffffffffffffffffffffffff1633145b610266576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603d60248201527f476c6f62616c45786974526f6f744d616e616765723a3a75706461746545786960448201527f74526f6f743a204f4e4c595f414c4c4f5745445f434f4e54524143545300000060648201526084015b60405180910390fd5b60055473ffffffffffffffffffffffffffffffffffffffff16330361028b5760018190555b60045473ffffffffffffffffffffffffffffffffffffffff1633036102b05760028190555b600254600154604080516020810193909352820152600090606001604051602081830303815290604052805190602001209050600360008281526020019081526020016000205460000361033e57600081815260036020526040808220429055600154600254915190927f61014378f82a0d809aefaf87a8ac9505b89c321808287a6e7810f29304c1fce391a35b5050565b600054610100900460ff16158080156103625750600054600160ff909116105b8061037c5750303b15801561037c575060005460ff166001145b610408576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a6564000000000000000000000000000000000000606482015260840161025d565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561046657600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6005805473ffffffffffffffffffffffffffffffffffffffff8086167fffffffffffffffffffffffff0000000000000000000000000000000000000000928316179092556004805492851692909116919091179055801561051e57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b60006020828403121561053557600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461056057600080fd5b919050565b6000806040838503121561057857600080fd5b6105818361053c565b915061058f6020840161053c565b9050925092905056fea2646970667358221220423e83d388a63ed7ac53287c741e2b54c7d39b0614d1fb089d983befe87d324564736f6c634300080f0033", + "bytecode": "0x608060405234801561001057600080fd5b506105ce806100206000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c80633ed691ef1161005b5780633ed691ef146100e7578063485cc955146101205780635ec6a8df14610133578063a3c573eb1461017857600080fd5b806301fd90441461008d578063257b3632146100a9578063319cf735146100c957806333d6247d146100d2575b600080fd5b61009660015481565b6040519081526020015b60405180910390f35b6100966100b7366004610523565b60036020526000908152604090205481565b61009660025481565b6100e56100e0366004610523565b610198565b005b61009660025460015460408051602081019390935282015260009060600160405160208183030381529060405280519060200120905090565b6100e561012e366004610565565b610342565b6005546101539073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100a0565b6004546101539073ffffffffffffffffffffffffffffffffffffffff1681565b60055473ffffffffffffffffffffffffffffffffffffffff163314806101d5575060045473ffffffffffffffffffffffffffffffffffffffff1633145b610266576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603d60248201527f476c6f62616c45786974526f6f744d616e616765723a3a75706461746545786960448201527f74526f6f743a204f4e4c595f414c4c4f5745445f434f4e54524143545300000060648201526084015b60405180910390fd5b60055473ffffffffffffffffffffffffffffffffffffffff16330361028b5760018190555b60045473ffffffffffffffffffffffffffffffffffffffff1633036102b05760028190555b600254600154604080516020810193909352820152600090606001604051602081830303815290604052805190602001209050600360008281526020019081526020016000205460000361033e57600081815260036020526040808220429055600154600254915190927f61014378f82a0d809aefaf87a8ac9505b89c321808287a6e7810f29304c1fce391a35b5050565b600054610100900460ff16158080156103625750600054600160ff909116105b8061037c5750303b15801561037c575060005460ff166001145b610408576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a6564000000000000000000000000000000000000606482015260840161025d565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561046657600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6005805473ffffffffffffffffffffffffffffffffffffffff8086167fffffffffffffffffffffffff0000000000000000000000000000000000000000928316179092556004805492851692909116919091179055801561051e57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b60006020828403121561053557600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461056057600080fd5b919050565b6000806040838503121561057857600080fd5b6105818361053c565b915061058f6020840161053c565b9050925092905056fea264697066735822122087c7663431492f30a105bf22524206fa2a82b4aead6816ddcf7c2da40b828ee964736f6c634300080f0033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100885760003560e01c80633ed691ef1161005b5780633ed691ef146100e7578063485cc955146101205780635ec6a8df14610133578063a3c573eb1461017857600080fd5b806301fd90441461008d578063257b3632146100a9578063319cf735146100c957806333d6247d146100d2575b600080fd5b61009660015481565b6040519081526020015b60405180910390f35b6100966100b7366004610523565b60036020526000908152604090205481565b61009660025481565b6100e56100e0366004610523565b610198565b005b61009660025460015460408051602081019390935282015260009060600160405160208183030381529060405280519060200120905090565b6100e561012e366004610565565b610342565b6005546101539073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100a0565b6004546101539073ffffffffffffffffffffffffffffffffffffffff1681565b60055473ffffffffffffffffffffffffffffffffffffffff163314806101d5575060045473ffffffffffffffffffffffffffffffffffffffff1633145b610266576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603d60248201527f476c6f62616c45786974526f6f744d616e616765723a3a75706461746545786960448201527f74526f6f743a204f4e4c595f414c4c4f5745445f434f4e54524143545300000060648201526084015b60405180910390fd5b60055473ffffffffffffffffffffffffffffffffffffffff16330361028b5760018190555b60045473ffffffffffffffffffffffffffffffffffffffff1633036102b05760028190555b600254600154604080516020810193909352820152600090606001604051602081830303815290604052805190602001209050600360008281526020019081526020016000205460000361033e57600081815260036020526040808220429055600154600254915190927f61014378f82a0d809aefaf87a8ac9505b89c321808287a6e7810f29304c1fce391a35b5050565b600054610100900460ff16158080156103625750600054600160ff909116105b8061037c5750303b15801561037c575060005460ff166001145b610408576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a6564000000000000000000000000000000000000606482015260840161025d565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561046657600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6005805473ffffffffffffffffffffffffffffffffffffffff8086167fffffffffffffffffffffffff0000000000000000000000000000000000000000928316179092556004805492851692909116919091179055801561051e57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b60006020828403121561053557600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461056057600080fd5b919050565b6000806040838503121561057857600080fd5b6105818361053c565b915061058f6020840161053c565b9050925092905056fea264697066735822122087c7663431492f30a105bf22524206fa2a82b4aead6816ddcf7c2da40b828ee964736f6c634300080f0033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/compiled-contracts/GlobalExitRootManagerL2.json b/compiled-contracts/GlobalExitRootManagerL2.json index f923b07aa..87cb86c5c 100644 --- a/compiled-contracts/GlobalExitRootManagerL2.json +++ b/compiled-contracts/GlobalExitRootManagerL2.json @@ -73,8 +73,8 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b5060405161027938038061027983398101604081905261002f91610054565b600280546001600160a01b0319166001600160a01b0392909216919091179055610084565b60006020828403121561006657600080fd5b81516001600160a01b038116811461007d57600080fd5b9392505050565b6101e6806100936000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806301fd904414610051578063257b36321461006d57806333d6247d1461008d578063a3c573eb146100a2575b600080fd5b61005a60015481565b6040519081526020015b60405180910390f35b61005a61007b366004610197565b60006020819052908152604090205481565b6100a061009b366004610197565b6100e7565b005b6002546100c29073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610064565b60025473ffffffffffffffffffffffffffffffffffffffff163314610192576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603460248201527f476c6f62616c45786974526f6f744d616e616765724c323a3a7570646174654560448201527f786974526f6f743a204f4e4c595f425249444745000000000000000000000000606482015260840160405180910390fd5b600155565b6000602082840312156101a957600080fd5b503591905056fea2646970667358221220016d470f475254214f39dcc99bd9d9791546fd270bad790bf7a87e10c2e92c0464736f6c634300080f0033", - "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061004c5760003560e01c806301fd904414610051578063257b36321461006d57806333d6247d1461008d578063a3c573eb146100a2575b600080fd5b61005a60015481565b6040519081526020015b60405180910390f35b61005a61007b366004610197565b60006020819052908152604090205481565b6100a061009b366004610197565b6100e7565b005b6002546100c29073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610064565b60025473ffffffffffffffffffffffffffffffffffffffff163314610192576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603460248201527f476c6f62616c45786974526f6f744d616e616765724c323a3a7570646174654560448201527f786974526f6f743a204f4e4c595f425249444745000000000000000000000000606482015260840160405180910390fd5b600155565b6000602082840312156101a957600080fd5b503591905056fea2646970667358221220016d470f475254214f39dcc99bd9d9791546fd270bad790bf7a87e10c2e92c0464736f6c634300080f0033", + "bytecode": "0x608060405234801561001057600080fd5b5060405161027938038061027983398101604081905261002f91610054565b600280546001600160a01b0319166001600160a01b0392909216919091179055610084565b60006020828403121561006657600080fd5b81516001600160a01b038116811461007d57600080fd5b9392505050565b6101e6806100936000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806301fd904414610051578063257b36321461006d57806333d6247d1461008d578063a3c573eb146100a2575b600080fd5b61005a60015481565b6040519081526020015b60405180910390f35b61005a61007b366004610197565b60006020819052908152604090205481565b6100a061009b366004610197565b6100e7565b005b6002546100c29073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610064565b60025473ffffffffffffffffffffffffffffffffffffffff163314610192576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603460248201527f476c6f62616c45786974526f6f744d616e616765724c323a3a7570646174654560448201527f786974526f6f743a204f4e4c595f425249444745000000000000000000000000606482015260840160405180910390fd5b600155565b6000602082840312156101a957600080fd5b503591905056fea2646970667358221220fea7fcab965a97796cf30d6ff699830b40cf06628fa4f9baf7c5725155af254564736f6c634300080f0033", + "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061004c5760003560e01c806301fd904414610051578063257b36321461006d57806333d6247d1461008d578063a3c573eb146100a2575b600080fd5b61005a60015481565b6040519081526020015b60405180910390f35b61005a61007b366004610197565b60006020819052908152604090205481565b6100a061009b366004610197565b6100e7565b005b6002546100c29073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610064565b60025473ffffffffffffffffffffffffffffffffffffffff163314610192576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603460248201527f476c6f62616c45786974526f6f744d616e616765724c323a3a7570646174654560448201527f786974526f6f743a204f4e4c595f425249444745000000000000000000000000606482015260840160405180910390fd5b600155565b6000602082840312156101a957600080fd5b503591905056fea2646970667358221220fea7fcab965a97796cf30d6ff699830b40cf06628fa4f9baf7c5725155af254564736f6c634300080f0033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/compiled-contracts/GlobalExitRootManagerL2Mock.json b/compiled-contracts/GlobalExitRootManagerL2Mock.json index 0d152dbb0..ce1bc72d1 100644 --- a/compiled-contracts/GlobalExitRootManagerL2Mock.json +++ b/compiled-contracts/GlobalExitRootManagerL2Mock.json @@ -104,8 +104,8 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b506040516102ef3803806102ef83398101604081905261002f91610054565b600280546001600160a01b0319166001600160a01b0392909216919091179055610084565b60006020828403121561006657600080fd5b81516001600160a01b038116811461007d57600080fd5b9392505050565b61025c806100936000396000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c806333d6247d1161005057806333d6247d146100c857806396e07459146100db578063a3c573eb146100fb57600080fd5b806301fd904414610077578063116c40c314610093578063257b3632146100a8575b600080fd5b61008060015481565b6040519081526020015b60405180910390f35b6100a66100a13660046101eb565b600155565b005b6100806100b63660046101eb565b60006020819052908152604090205481565b6100a66100d63660046101eb565b610140565b6100a66100e9366004610204565b60009182526020829052604090912055565b60025461011b9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161008a565b60025473ffffffffffffffffffffffffffffffffffffffff1633146100a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603460248201527f476c6f62616c45786974526f6f744d616e616765724c323a3a7570646174654560448201527f786974526f6f743a204f4e4c595f425249444745000000000000000000000000606482015260840160405180910390fd5b6000602082840312156101fd57600080fd5b5035919050565b6000806040838503121561021757600080fd5b5050803592602090910135915056fea2646970667358221220d2bef258c77ff9dd55a7e99fcc3d972c4394423f9643b3e5c0f7ae83e2da961864736f6c634300080f0033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100725760003560e01c806333d6247d1161005057806333d6247d146100c857806396e07459146100db578063a3c573eb146100fb57600080fd5b806301fd904414610077578063116c40c314610093578063257b3632146100a8575b600080fd5b61008060015481565b6040519081526020015b60405180910390f35b6100a66100a13660046101eb565b600155565b005b6100806100b63660046101eb565b60006020819052908152604090205481565b6100a66100d63660046101eb565b610140565b6100a66100e9366004610204565b60009182526020829052604090912055565b60025461011b9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161008a565b60025473ffffffffffffffffffffffffffffffffffffffff1633146100a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603460248201527f476c6f62616c45786974526f6f744d616e616765724c323a3a7570646174654560448201527f786974526f6f743a204f4e4c595f425249444745000000000000000000000000606482015260840160405180910390fd5b6000602082840312156101fd57600080fd5b5035919050565b6000806040838503121561021757600080fd5b5050803592602090910135915056fea2646970667358221220d2bef258c77ff9dd55a7e99fcc3d972c4394423f9643b3e5c0f7ae83e2da961864736f6c634300080f0033", + "bytecode": "0x608060405234801561001057600080fd5b506040516102ef3803806102ef83398101604081905261002f91610054565b600280546001600160a01b0319166001600160a01b0392909216919091179055610084565b60006020828403121561006657600080fd5b81516001600160a01b038116811461007d57600080fd5b9392505050565b61025c806100936000396000f3fe608060405234801561001057600080fd5b50600436106100725760003560e01c806333d6247d1161005057806333d6247d146100c857806396e07459146100db578063a3c573eb146100fb57600080fd5b806301fd904414610077578063116c40c314610093578063257b3632146100a8575b600080fd5b61008060015481565b6040519081526020015b60405180910390f35b6100a66100a13660046101eb565b600155565b005b6100806100b63660046101eb565b60006020819052908152604090205481565b6100a66100d63660046101eb565b610140565b6100a66100e9366004610204565b60009182526020829052604090912055565b60025461011b9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161008a565b60025473ffffffffffffffffffffffffffffffffffffffff1633146100a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603460248201527f476c6f62616c45786974526f6f744d616e616765724c323a3a7570646174654560448201527f786974526f6f743a204f4e4c595f425249444745000000000000000000000000606482015260840160405180910390fd5b6000602082840312156101fd57600080fd5b5035919050565b6000806040838503121561021757600080fd5b5050803592602090910135915056fea2646970667358221220a32bf46736e715c19b2284ac2bb76ce1543e9344b11d06b9403153cc6c8f964b64736f6c634300080f0033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100725760003560e01c806333d6247d1161005057806333d6247d146100c857806396e07459146100db578063a3c573eb146100fb57600080fd5b806301fd904414610077578063116c40c314610093578063257b3632146100a8575b600080fd5b61008060015481565b6040519081526020015b60405180910390f35b6100a66100a13660046101eb565b600155565b005b6100806100b63660046101eb565b60006020819052908152604090205481565b6100a66100d63660046101eb565b610140565b6100a66100e9366004610204565b60009182526020829052604090912055565b60025461011b9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161008a565b60025473ffffffffffffffffffffffffffffffffffffffff1633146100a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603460248201527f476c6f62616c45786974526f6f744d616e616765724c323a3a7570646174654560448201527f786974526f6f743a204f4e4c595f425249444745000000000000000000000000606482015260840160405180910390fd5b6000602082840312156101fd57600080fd5b5035919050565b6000806040838503121561021757600080fd5b5050803592602090910135915056fea2646970667358221220a32bf46736e715c19b2284ac2bb76ce1543e9344b11d06b9403153cc6c8f964b64736f6c634300080f0033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/compiled-contracts/GlobalExitRootManagerMock.json b/compiled-contracts/GlobalExitRootManagerMock.json index 2aaeb5173..5ef303ca5 100644 --- a/compiled-contracts/GlobalExitRootManagerMock.json +++ b/compiled-contracts/GlobalExitRootManagerMock.json @@ -153,6 +153,24 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "globalExitRoot", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "timestamp", + "type": "uint256" + } + ], + "name": "setGlobalExitRoot", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, { "inputs": [ { @@ -180,8 +198,8 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b5060405161086738038061086783398101604081905261002f916101bb565b6100398282610040565b50506101ee565b600054610100900460ff16158080156100605750600054600160ff909116105b8061008b57506100793061019060201b6105a31760201c565b15801561008b575060005460ff166001145b6100f25760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840160405180910390fd5b6000805460ff191660011790558015610115576000805461ff0019166101001790555b600580546001600160a01b038086166001600160a01b0319928316179092556004805492851692909116919091179055801561018b576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b6001600160a01b03163b151590565b80516001600160a01b03811681146101b657600080fd5b919050565b600080604083850312156101ce57600080fd5b6101d78361019f565b91506101e56020840161019f565b90509250929050565b61066a806101fd6000396000f3fe608060405234801561001057600080fd5b50600436106100a35760003560e01c806333d6247d11610076578063485cc9551161005b578063485cc9551461014e5780635ec6a8df14610161578063a3c573eb146101a657600080fd5b806333d6247d146101025780633ed691ef1461011557600080fd5b806301fd9044146100a8578063051a9e28146100c4578063257b3632146100d9578063319cf735146100f9575b600080fd5b6100b160015481565b6040519081526020015b60405180910390f35b6100d76100d23660046105bf565b6101c6565b005b6100b16100e73660046105bf565b60036020526000908152604090205481565b6100b160025481565b6100d76101103660046105bf565b610218565b6100b160025460015460408051602081019390935282015260009060600160405160208183030381529060405280519060200120905090565b6100d761015c366004610601565b6103c2565b6005546101819073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100bb565b6004546101819073ffffffffffffffffffffffffffffffffffffffff1681565b806003600061020460025460015460408051602081019390935282015260009060600160405160208183030381529060405280519060200120905090565b815260208101919091526040016000205550565b60055473ffffffffffffffffffffffffffffffffffffffff16331480610255575060045473ffffffffffffffffffffffffffffffffffffffff1633145b6102e6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603d60248201527f476c6f62616c45786974526f6f744d616e616765723a3a75706461746545786960448201527f74526f6f743a204f4e4c595f414c4c4f5745445f434f4e54524143545300000060648201526084015b60405180910390fd5b60055473ffffffffffffffffffffffffffffffffffffffff16330361030b5760018190555b60045473ffffffffffffffffffffffffffffffffffffffff1633036103305760028190555b60025460015460408051602081019390935282015260009060600160405160208183030381529060405280519060200120905060036000828152602001908152602001600020546000036103be57600081815260036020526040808220429055600154600254915190927f61014378f82a0d809aefaf87a8ac9505b89c321808287a6e7810f29304c1fce391a35b5050565b600054610100900460ff16158080156103e25750600054600160ff909116105b806103fc5750303b1580156103fc575060005460ff166001145b610488576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016102dd565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905580156104e657600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6005805473ffffffffffffffffffffffffffffffffffffffff8086167fffffffffffffffffffffffff0000000000000000000000000000000000000000928316179092556004805492851692909116919091179055801561059e57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b6000602082840312156105d157600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff811681146105fc57600080fd5b919050565b6000806040838503121561061457600080fd5b61061d836105d8565b915061062b602084016105d8565b9050925092905056fea2646970667358221220555671f0d50a061db0af5627095739ecf0ab0b4036de759223f1070b30a96be464736f6c634300080f0033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100a35760003560e01c806333d6247d11610076578063485cc9551161005b578063485cc9551461014e5780635ec6a8df14610161578063a3c573eb146101a657600080fd5b806333d6247d146101025780633ed691ef1461011557600080fd5b806301fd9044146100a8578063051a9e28146100c4578063257b3632146100d9578063319cf735146100f9575b600080fd5b6100b160015481565b6040519081526020015b60405180910390f35b6100d76100d23660046105bf565b6101c6565b005b6100b16100e73660046105bf565b60036020526000908152604090205481565b6100b160025481565b6100d76101103660046105bf565b610218565b6100b160025460015460408051602081019390935282015260009060600160405160208183030381529060405280519060200120905090565b6100d761015c366004610601565b6103c2565b6005546101819073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100bb565b6004546101819073ffffffffffffffffffffffffffffffffffffffff1681565b806003600061020460025460015460408051602081019390935282015260009060600160405160208183030381529060405280519060200120905090565b815260208101919091526040016000205550565b60055473ffffffffffffffffffffffffffffffffffffffff16331480610255575060045473ffffffffffffffffffffffffffffffffffffffff1633145b6102e6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603d60248201527f476c6f62616c45786974526f6f744d616e616765723a3a75706461746545786960448201527f74526f6f743a204f4e4c595f414c4c4f5745445f434f4e54524143545300000060648201526084015b60405180910390fd5b60055473ffffffffffffffffffffffffffffffffffffffff16330361030b5760018190555b60045473ffffffffffffffffffffffffffffffffffffffff1633036103305760028190555b60025460015460408051602081019390935282015260009060600160405160208183030381529060405280519060200120905060036000828152602001908152602001600020546000036103be57600081815260036020526040808220429055600154600254915190927f61014378f82a0d809aefaf87a8ac9505b89c321808287a6e7810f29304c1fce391a35b5050565b600054610100900460ff16158080156103e25750600054600160ff909116105b806103fc5750303b1580156103fc575060005460ff166001145b610488576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016102dd565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905580156104e657600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6005805473ffffffffffffffffffffffffffffffffffffffff8086167fffffffffffffffffffffffff0000000000000000000000000000000000000000928316179092556004805492851692909116919091179055801561059e57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b6000602082840312156105d157600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff811681146105fc57600080fd5b919050565b6000806040838503121561061457600080fd5b61061d836105d8565b915061062b602084016105d8565b9050925092905056fea2646970667358221220555671f0d50a061db0af5627095739ecf0ab0b4036de759223f1070b30a96be464736f6c634300080f0033", + "bytecode": "0x608060405234801561001057600080fd5b506040516108c43803806108c483398101604081905261002f916101bb565b6100398282610040565b50506101ee565b600054610100900460ff16158080156100605750600054600160ff909116105b8061008b57506100793061019060201b6105de1760201c565b15801561008b575060005460ff166001145b6100f25760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840160405180910390fd5b6000805460ff191660011790558015610115576000805461ff0019166101001790555b600580546001600160a01b038086166001600160a01b0319928316179092556004805492851692909116919091179055801561018b576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b6001600160a01b03163b151590565b80516001600160a01b03811681146101b657600080fd5b919050565b600080604083850312156101ce57600080fd5b6101d78361019f565b91506101e56020840161019f565b90509250929050565b6106c7806101fd6000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c80633ed691ef116100765780635bcef6731161005b5780635bcef6731461017c5780635ec6a8df1461019c578063a3c573eb146101e157600080fd5b80633ed691ef14610130578063485cc9551461016957600080fd5b8063257b3632116100a7578063257b3632146100f4578063319cf7351461011457806333d6247d1461011d57600080fd5b806301fd9044146100c3578063051a9e28146100df575b600080fd5b6100cc60015481565b6040519081526020015b60405180910390f35b6100f26100ed3660046105fa565b610201565b005b6100cc6101023660046105fa565b60036020526000908152604090205481565b6100cc60025481565b6100f261012b3660046105fa565b610253565b6100cc60025460015460408051602081019390935282015260009060600160405160208183030381529060405280519060200120905090565b6100f261017736600461063c565b6103fd565b6100f261018a36600461066f565b60009182526003602052604090912055565b6005546101bc9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100d6565b6004546101bc9073ffffffffffffffffffffffffffffffffffffffff1681565b806003600061023f60025460015460408051602081019390935282015260009060600160405160208183030381529060405280519060200120905090565b815260208101919091526040016000205550565b60055473ffffffffffffffffffffffffffffffffffffffff16331480610290575060045473ffffffffffffffffffffffffffffffffffffffff1633145b610321576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603d60248201527f476c6f62616c45786974526f6f744d616e616765723a3a75706461746545786960448201527f74526f6f743a204f4e4c595f414c4c4f5745445f434f4e54524143545300000060648201526084015b60405180910390fd5b60055473ffffffffffffffffffffffffffffffffffffffff1633036103465760018190555b60045473ffffffffffffffffffffffffffffffffffffffff16330361036b5760028190555b60025460015460408051602081019390935282015260009060600160405160208183030381529060405280519060200120905060036000828152602001908152602001600020546000036103f957600081815260036020526040808220429055600154600254915190927f61014378f82a0d809aefaf87a8ac9505b89c321808287a6e7810f29304c1fce391a35b5050565b600054610100900460ff161580801561041d5750600054600160ff909116105b806104375750303b158015610437575060005460ff166001145b6104c3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610318565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561052157600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6005805473ffffffffffffffffffffffffffffffffffffffff8086167fffffffffffffffffffffffff000000000000000000000000000000000000000092831617909255600480549285169290911691909117905580156105d957600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b60006020828403121561060c57600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461063757600080fd5b919050565b6000806040838503121561064f57600080fd5b61065883610613565b915061066660208401610613565b90509250929050565b6000806040838503121561068257600080fd5b5050803592602090910135915056fea26469706673582212206d13783be5c9904d415bd5901458df71375f44b8010a7e57e675fc68a3a845c964736f6c634300080f0033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100be5760003560e01c80633ed691ef116100765780635bcef6731161005b5780635bcef6731461017c5780635ec6a8df1461019c578063a3c573eb146101e157600080fd5b80633ed691ef14610130578063485cc9551461016957600080fd5b8063257b3632116100a7578063257b3632146100f4578063319cf7351461011457806333d6247d1461011d57600080fd5b806301fd9044146100c3578063051a9e28146100df575b600080fd5b6100cc60015481565b6040519081526020015b60405180910390f35b6100f26100ed3660046105fa565b610201565b005b6100cc6101023660046105fa565b60036020526000908152604090205481565b6100cc60025481565b6100f261012b3660046105fa565b610253565b6100cc60025460015460408051602081019390935282015260009060600160405160208183030381529060405280519060200120905090565b6100f261017736600461063c565b6103fd565b6100f261018a36600461066f565b60009182526003602052604090912055565b6005546101bc9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100d6565b6004546101bc9073ffffffffffffffffffffffffffffffffffffffff1681565b806003600061023f60025460015460408051602081019390935282015260009060600160405160208183030381529060405280519060200120905090565b815260208101919091526040016000205550565b60055473ffffffffffffffffffffffffffffffffffffffff16331480610290575060045473ffffffffffffffffffffffffffffffffffffffff1633145b610321576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603d60248201527f476c6f62616c45786974526f6f744d616e616765723a3a75706461746545786960448201527f74526f6f743a204f4e4c595f414c4c4f5745445f434f4e54524143545300000060648201526084015b60405180910390fd5b60055473ffffffffffffffffffffffffffffffffffffffff1633036103465760018190555b60045473ffffffffffffffffffffffffffffffffffffffff16330361036b5760028190555b60025460015460408051602081019390935282015260009060600160405160208183030381529060405280519060200120905060036000828152602001908152602001600020546000036103f957600081815260036020526040808220429055600154600254915190927f61014378f82a0d809aefaf87a8ac9505b89c321808287a6e7810f29304c1fce391a35b5050565b600054610100900460ff161580801561041d5750600054600160ff909116105b806104375750303b158015610437575060005460ff166001145b6104c3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610318565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561052157600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6005805473ffffffffffffffffffffffffffffffffffffffff8086167fffffffffffffffffffffffff000000000000000000000000000000000000000092831617909255600480549285169290911691909117905580156105d957600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b60006020828403121561060c57600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461063757600080fd5b919050565b6000806040838503121561064f57600080fd5b61065883610613565b915061066660208401610613565b90509250929050565b6000806040838503121561068257600080fd5b5050803592602090910135915056fea26469706673582212206d13783be5c9904d415bd5901458df71375f44b8010a7e57e675fc68a3a845c964736f6c634300080f0033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/compiled-contracts/ProofOfEfficiency.json b/compiled-contracts/ProofOfEfficiency.json index ebab26c60..8ea94b688 100644 --- a/compiled-contracts/ProofOfEfficiency.json +++ b/compiled-contracts/ProofOfEfficiency.json @@ -94,7 +94,7 @@ "type": "bytes32" } ], - "name": "ProofDifferentState", + "name": "ProveNonDeterministicState", "type": "event" }, { @@ -639,7 +639,7 @@ "type": "uint256[2]" } ], - "name": "proofDifferentState", + "name": "proveNonDeterministicState", "outputs": [], "stateMutability": "nonpayable", "type": "function" @@ -896,8 +896,8 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b50614928806100206000396000f3fe608060405234801561001057600080fd5b50600436106102c85760003560e01c80638c4a0af71161017b578063cfa8ed47116100d8578063e7a7ed021161008c578063eaeb077b11610071578063eaeb077b14610687578063f2fde38b1461069a578063f7552761146106ad57600080fd5b8063e7a7ed0214610637578063e8bf92ed1461066757600080fd5b8063d8d1091b116100bd578063d8d1091b146105ef578063d8f54db014610602578063dbc169761461062f57600080fd5b8063cfa8ed47146105a3578063d02103ca146105cf57600080fd5b8063adc879e91161012f578063b4d63f5811610114578063b4d63f581461054b578063b6b0b0971461056b578063c89e42df1461059057600080fd5b8063adc879e91461052e578063b02286c01461054257600080fd5b806399f5634e1161016057806399f5634e146104fc578063a3c573eb14610504578063ab9fc5ef1461052457600080fd5b80638c4a0af7146104cb5780638da5cb5b146104de57600080fd5b8063542028d511610229578063715018a6116101dd57806379847057116101c2578063798470571461049c5780637fcb3653146104a457806381df7d3f146104b857600080fd5b8063715018a6146104815780637152facf1461048957600080fd5b80636766f09d1161020e5780636766f09d1461043b5780636b8616ce1461044e5780636ff512cc1461046e57600080fd5b8063542028d51461042057806355b925e61461042857600080fd5b806327eb6c0f11610280578063423fa85611610265578063423fa856146103aa57806345605267146103ca5780635392c5e0146103f257600080fd5b806327eb6c0f146103525780633c1582671461039757600080fd5b806319d8ac61116102b157806319d8ac61146103085780631c1083e2146103355780632072f6c51461034a57600080fd5b8063107bf28c146102cd57806315064c96146102eb575b600080fd5b6102d56106bc565b6040516102e29190613e09565b60405180910390f35b6065546102f89060ff1681565b60405190151581526020016102e2565b60685461031c9067ffffffffffffffff1681565b60405167ffffffffffffffff90911681526020016102e2565b610348610343366004613e4e565b61074a565b005b610348610856565b6070546103729073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016102e2565b6103486103a5366004613fc3565b610907565b60685461031c9068010000000000000000900467ffffffffffffffff1681565b60685461031c90700100000000000000000000000000000000900467ffffffffffffffff1681565b6104126104003660046140da565b606b6020526000908152604090205481565b6040519081526020016102e2565b6102d56111fe565b61034861043636600461410c565b61120b565b61034861044936600461410c565b6117d4565b61041261045c3660046140da565b60666020526000908152604090205481565b61034861047c366004613e4e565b611e1e565b610348611f38565b6102d561049736600461418f565b611f4a565b610412612180565b60695461031c9067ffffffffffffffff1681565b6103486104c63660046141ea565b6121fa565b6103486104d93660046142e4565b612553565b60335473ffffffffffffffffffffffffffffffffffffffff16610372565b61041261266d565b6071546103729073ffffffffffffffffffffffffffffffffffffffff1681565b61031c62093a8081565b606e5461031c9067ffffffffffffffff1681565b61041261ea6081565b6104126105593660046140da565b60676020526000908152604090205481565b60655461037290610100900473ffffffffffffffffffffffffffffffffffffffff1681565b61034861059e366004614301565b61279e565b6069546103729068010000000000000000900473ffffffffffffffffffffffffffffffffffffffff1681565b606a546103729073ffffffffffffffffffffffffffffffffffffffff1681565b6103486105fd36600461433e565b612873565b6069546102f8907c0100000000000000000000000000000000000000000000000000000000900460ff1681565b610348612f18565b60685461031c907801000000000000000000000000000000000000000000000000900467ffffffffffffffff1681565b606c546103729073ffffffffffffffffffffffffffffffffffffffff1681565b610348610695366004614431565b6130a7565b6103486106a8366004613e4e565b6135a7565b61041267016345785d8a000081565b606f80546106c990614476565b80601f01602080910402602001604051908101604052809291908181526020018280546106f590614476565b80156107425780601f1061071757610100808354040283529160200191610742565b820191906000526020600020905b81548152906001019060200180831161072557829003601f168201915b505050505081565b60705473ffffffffffffffffffffffffffffffffffffffff1633146107dc5760405162461bcd60e51b815260206004820152603d60248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7953656375726974794360448201527f6f756e63696c3a206f6e6c7920736563757269747920636f756e63696c00000060648201526084015b60405180910390fd5b607080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f373a9d1d60f01a33ff86d540991f09f5c5d7482656794de80be077c5eb9693d9906020015b60405180910390a150565b60655460ff16156108f55760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a4016107d3565b6108fd613644565b6109056136ab565b565b60655460ff16156109a65760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a4016107d3565b60695468010000000000000000900473ffffffffffffffffffffffffffffffffffffffff163314610a3f5760405162461bcd60e51b815260206004820152603f60248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7954727573746564536560448201527f7175656e6365723a206f6e6c7920747275737465642073657175656e6365720060648201526084016107d3565b805160685467ffffffffffffffff680100000000000000008204811660008181526067602052604081205483851694929370010000000000000000000000000000000090930490921691905b85811015610fef576000878281518110610aa757610aa76144c9565b602002602001015190506000816060015167ffffffffffffffff161115610cc05783610ad281614527565b945050600081600001518051906020012082602001518360600151604051602001610b3593929190928352602083019190915260c01b7fffffffffffffffff00000000000000000000000000000000000000000000000016604082015260480190565b60408051601f19818403018152918152815160209283012067ffffffffffffffff8816600090815260669093529120549091508114610c025760405162461bcd60e51b815260206004820152604260248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365426174636860448201527f65733a20466f7263656420626174636865732064617461206d757374206d617460648201527f6368000000000000000000000000000000000000000000000000000000000000608482015260a4016107d3565b816060015167ffffffffffffffff16826040015167ffffffffffffffff161015610cba5760405162461bcd60e51b815260206004820152605d60248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365426174636860448201527f65733a20466f7263656420626174636865732074696d657374616d70206d757360648201527f7420626520626967676572206f7220657175616c207468616e206d696e000000608482015260a4016107d3565b50610e5a565b60208101511580610d6f5750606a5460208201516040517f257b363200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9092169163257b363291610d299160040190815260200190565b6020604051808303816000875af1158015610d48573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d6c919061454e565b15155b610de15760405162461bcd60e51b815260206004820152603f60248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365426174636860448201527f65733a20476c6f62616c206578697420726f6f74206d7573742065786973740060648201526084016107d3565b80515161ea6011610e5a5760405162461bcd60e51b815260206004820152603f60248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365426174636860448201527f65733a205472616e73616374696f6e73206279746573206f766572666c6f770060648201526084016107d3565b8567ffffffffffffffff16816040015167ffffffffffffffff1610158015610e90575042816040015167ffffffffffffffff1611155b610f285760405162461bcd60e51b815260206004820152604260248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365426174636860448201527f65733a2054696d657374616d70206d75737420626520696e736964652072616e60648201527f6765000000000000000000000000000000000000000000000000000000000000608482015260a4016107d3565b805180516020918201208183015160408085015181519485018890529084019290925260608084019190915260c09190911b7fffffffffffffffff00000000000000000000000000000000000000000000000016608083015233901b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166088820152609c016040516020818303038152906040528051906020012092508480610fd190614527565b95505080604001519550508080610fe790614567565b915050610a8b565b5060685467ffffffffffffffff7801000000000000000000000000000000000000000000000000909104811690831611156110925760405162461bcd60e51b815260206004820152603a60248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365426174636860448201527f65733a20466f7263652062617463686573206f766572666c6f7700000000000060648201526084016107d3565b6068546000906110c090700100000000000000000000000000000000900467ffffffffffffffff168461459f565b6110d49067ffffffffffffffff16876145c8565b6068805467ffffffffffffffff868116700100000000000000000000000000000000027fffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff8983166801000000000000000081027fffffffffffffffffffffffffffffffff00000000000000000000000000000000909516938c1693909317939093179290921691909117909155600090815260676020526040902083905590506111b1333061118b8467016345785d8a00006145df565b606554610100900473ffffffffffffffffffffffffffffffffffffffff16929190613735565b6068546040516801000000000000000090910467ffffffffffffffff16907f303446e6a8cb73c83dff421c0b1d5e5ce0719dab1bff13660fc254e58cc17fce90600090a250505050505050565b606d80546106c990614476565b60655460ff16156112aa5760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a4016107d3565b60695467ffffffffffffffff90811690881611156113565760405162461bcd60e51b815260206004820152605b60248201527f50726f6f664f66456666696369656e63793a3a7665726966794261746368657360448201527f3a20696e69744e756d4261746368206d757374206265206c657373206f72206560648201527f7175616c207468616e206c617374566572696669656442617463680000000000608482015260a4016107d3565b60695467ffffffffffffffff908116908716116114015760405162461bcd60e51b815260206004820152605560248201527f50726f6f664f66456666696369656e63793a3a7665726966794261746368657360448201527f3a2066696e616c4e65774261746368206d75737420626520626967676572207460648201527f68616e206c617374566572696669656442617463680000000000000000000000608482015260a4016107d3565b67ffffffffffffffff87166000908152606b60205260409020546114b35760405162461bcd60e51b815260206004820152604860248201527f50726f6f664f66456666696369656e63793a3a7665726966794261746368657360448201527f3a20696e69744e756d426174636820737461746520726f6f7420646f6573206e60648201527f6f74206578697374000000000000000000000000000000000000000000000000608482015260a4016107d3565b60006114c188888888611f4a565b905060007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000016002836040516114f6919061461c565b602060405180830381855afa158015611513573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190611536919061454e565b6115409190614667565b606c546040805160208101825283815290517f43753b4d00000000000000000000000000000000000000000000000000000000815292935073ffffffffffffffffffffffffffffffffffffffff909116916343753b4d916115aa918991899189919060040161467b565b602060405180830381865afa1580156115c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115eb91906146f5565b61165d5760405162461bcd60e51b815260206004820152602f60248201527f50726f6f664f66456666696369656e63793a3a7665726966794261746368657360448201527f3a20494e56414c49445f50524f4f46000000000000000000000000000000000060648201526084016107d3565b6069546116bb90339061167a9067ffffffffffffffff168b61459f565b67ffffffffffffffff1661168c61266d565b61169691906145df565b606554610100900473ffffffffffffffffffffffffffffffffffffffff1691906137f3565b606980547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff8a169081179091556000908152606b602052604090819020879055606a5490517f33d6247d0000000000000000000000000000000000000000000000000000000081526004810189905273ffffffffffffffffffffffffffffffffffffffff909116906333d6247d90602401600060405180830381600087803b15801561177057600080fd5b505af1158015611784573d6000803e3d6000fd5b505060405188815233925067ffffffffffffffff8b1691507f9c72852172521097ba7e1482e6b44b351323df0155f97f4ea18fcec28e1f59669060200160405180910390a3505050505050505050565b60655460ff16156118735760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a4016107d3565b8567ffffffffffffffff168767ffffffffffffffff16106119225760405162461bcd60e51b815260206004820152605660248201527f50726f6f664f66456666696369656e63793a3a70726f6f66446966666572656e60448201527f7453746174653a2066696e616c4e65774261746368206d75737420626520626960648201527f67676572207468616e20696e69744e756d426174636800000000000000000000608482015260a4016107d3565b60695467ffffffffffffffff90811690871611156119f45760405162461bcd60e51b815260206004820152606260248201527f50726f6f664f66456666696369656e63793a3a70726f6f66446966666572656e60448201527f7453746174653a2066696e616c4e65774261746368206d757374206265206c6560648201527f7373206f7220657175616c207468616e206c617374566572696669656442617460848201527f636800000000000000000000000000000000000000000000000000000000000060a482015260c4016107d3565b67ffffffffffffffff87166000908152606b6020526040902054611aa65760405162461bcd60e51b815260206004820152604e60248201527f50726f6f664f66456666696369656e63793a3a70726f6f66446966666572656e60448201527f7453746174653a20696e69744e756d426174636820737461746520726f6f742060648201527f646f6573206e6f74206578697374000000000000000000000000000000000000608482015260a4016107d3565b67ffffffffffffffff86166000908152606b6020526040902054611b585760405162461bcd60e51b815260206004820152604f60248201527f50726f6f664f66456666696369656e63793a3a70726f6f66446966666572656e60448201527f7453746174653a2066696e616c4e6577426174636820737461746520726f6f7460648201527f20646f6573206e6f742065786973740000000000000000000000000000000000608482015260a4016107d3565b6000611b6688888888611f4a565b905060007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001600283604051611b9b919061461c565b602060405180830381855afa158015611bb8573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190611bdb919061454e565b611be59190614667565b606c546040805160208101825283815290517f43753b4d00000000000000000000000000000000000000000000000000000000815292935073ffffffffffffffffffffffffffffffffffffffff909116916343753b4d91611c4f918991899189919060040161467b565b602060405180830381865afa158015611c6c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c9091906146f5565b611d025760405162461bcd60e51b815260206004820152603560248201527f50726f6f664f66456666696369656e63793a3a70726f6f66446966666572656e60448201527f7453746174653a20494e56414c49445f50524f4f46000000000000000000000060648201526084016107d3565b67ffffffffffffffff88166000908152606b6020526040902054869003611db75760405162461bcd60e51b815260206004820152605960248201527f50726f6f664f66456666696369656e63793a3a70726f6f66446966666572656e60448201527f7453746174653a2073746f72656420726f6f74206d757374206265206469666660648201527f6572656e74207468616e206e657720737461746520726f6f7400000000000000608482015260a4016107d3565b67ffffffffffffffff88166000908152606b60209081526040918290205482519081529081018890527fe579d6d18f02941e1d0f59bff70f1b2c894edc991badab38343786df2846fe55910160405180910390a1611e136136ab565b505050505050505050565b60695468010000000000000000900473ffffffffffffffffffffffffffffffffffffffff163314611eb75760405162461bcd60e51b815260206004820152603f60248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7954727573746564536560448201527f7175656e6365723a206f6e6c7920747275737465642073657175656e6365720060648201526084016107d3565b606980547fffffffff0000000000000000000000000000000000000000ffffffffffffffff166801000000000000000073ffffffffffffffffffffffffffffffffffffffff8416908102919091179091556040519081527ff54144f9611984021529f814a1cb6a41e22c58351510a0d9f7e822618abb9cc09060200161084b565b611f40613644565b610905600061384e565b67ffffffffffffffff808516600081815260676020526040808220549387168252902054606092911580611f7d57508115155b6120155760405162461bcd60e51b815260206004820152604560248201527f50726f6f664f66456666696369656e63793a3a676574496e707574536e61726b60448201527f42797465733a206f6c64416363496e7075744861736820646f6573206e6f742060648201527f6578697374000000000000000000000000000000000000000000000000000000608482015260a4016107d3565b806120ae5760405162461bcd60e51b815260206004820152604560248201527f50726f6f664f66456666696369656e63793a3a676574496e707574536e61726b60448201527f42797465733a206e6577416363496e7075744861736820646f6573206e6f742060648201527f6578697374000000000000000000000000000000000000000000000000000000608482015260a4016107d3565b67ffffffffffffffff87166000908152606b602090815260409182902054606e5492517fffffffffffffffffffffffffffffffffffffffff0000000000000000000000003360601b16928101929092526034820152605481018490527fffffffffffffffff00000000000000000000000000000000000000000000000060c08a811b8216607484015292831b8116607c8301526084820187905260a4820184905260c482018890529188901b90911660e482015260ec0160405160208183030381529060405292505050949350505050565b60685460009067ffffffffffffffff70010000000000000000000000000000000082048116916121cf917801000000000000000000000000000000000000000000000000909104166001614712565b6121d9919061459f565b6121f59067ffffffffffffffff16670de0b6b3a76400006145df565b905090565b600054610100900460ff161580801561221a5750600054600160ff909116105b806122345750303b158015612234575060005460ff166001145b6122a65760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016107d3565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561230457600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b606a80547fffffffffffffffffffffffff000000000000000000000000000000000000000090811673ffffffffffffffffffffffffffffffffffffffff8f811691909117909255606580547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101008f851602179055606c80549091168c831617905560008052606b6020527fc8cc8bda7ad4886bea3ebbdafa02e79d37c39bf4011696b26a31a0802fd9458b8a9055606980547fffffff000000000000000000000000000000000000000000ffffffffffffffff1668010000000000000000928b16929092027fffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff16919091177c010000000000000000000000000000000000000000000000000000000089151502179055606d612443878261478c565b50606e80547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff8716179055606f612484858261478c565b506071805473ffffffffffffffffffffffffffffffffffffffff8086167fffffffffffffffffffffffff00000000000000000000000000000000000000009283161790925560708054928516929091169190911790556124e26138c5565b801561254557600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050505050565b60695468010000000000000000900473ffffffffffffffffffffffffffffffffffffffff1633146125ec5760405162461bcd60e51b815260206004820152603f60248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7954727573746564536560448201527f7175656e6365723a206f6e6c7920747275737465642073657175656e6365720060648201526084016107d3565b606980548215157c0100000000000000000000000000000000000000000000000000000000027fffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff9091161790556040517fbacda50a4a8575be1d91a7ebe29ee45056f3a94f12a2281eb6b43afa33bcefe69061084b90831515815260200190565b6065546040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152600091829161010090910473ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa1580156126e4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612708919061454e565b60695460685491925060009167ffffffffffffffff9182169168010000000000000000820481169161276d917001000000000000000000000000000000008204811691780100000000000000000000000000000000000000000000000090041661459f565b6127779190614712565b612781919061459f565b67ffffffffffffffff1690506127978183614888565b9250505090565b60695468010000000000000000900473ffffffffffffffffffffffffffffffffffffffff1633146128375760405162461bcd60e51b815260206004820152603f60248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7954727573746564536560448201527f7175656e6365723a206f6e6c7920747275737465642073657175656e6365720060648201526084016107d3565b606d612843828261478c565b507f6b8f723a4c7a5335cafae8a598a0aa0301be1387c037dccc085b62add6448b208160405161084b9190613e09565b60655460ff16156129125760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a4016107d3565b6069547c0100000000000000000000000000000000000000000000000000000000900460ff1615156001146129d55760405162461bcd60e51b815260206004820152604860248201527f50726f6f664f66456666696369656e63793a3a6973466f72636542617463684160448201527f6c6c6f7765643a206f6e6c7920696620666f726365206261746368206973206160648201527f7661696c61626c65000000000000000000000000000000000000000000000000608482015260a4016107d3565b805180612a705760405162461bcd60e51b815260206004820152604260248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365466f72636560448201527f42617463683a204d75737420666f726365206174206c6561737420312062617460648201527f6368000000000000000000000000000000000000000000000000000000000000608482015260a4016107d3565b60685467ffffffffffffffff78010000000000000000000000000000000000000000000000008204811691612abb91849170010000000000000000000000000000000090041661489c565b1115612b2f5760405162461bcd60e51b815260206004820152603a60248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365466f72636560448201527f42617463683a20466f72636520626174636820696e76616c696400000000000060648201526084016107d3565b60685467ffffffffffffffff680100000000000000008204811660008181526067602052604081205491937001000000000000000000000000000000009004909216915b84811015612e48576000868281518110612b8f57612b8f6144c9565b602002602001015190508380612ba490614527565b825180516020918201208185015160408087015181519485019390935283015260c01b7fffffffffffffffff0000000000000000000000000000000000000000000000001660608201529095506000915060680160408051601f19818403018152918152815160209283012067ffffffffffffffff8816600090815260669093529120549091508114612cc55760405162461bcd60e51b815260206004820152604760248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365466f72636560448201527f426174636865733a20466f7263656420626174636865732064617461206d757360648201527f74206d6174636800000000000000000000000000000000000000000000000000608482015260a4016107d3565b612cd06001886145c8565b8303612d8e574262093a808360400151612cea9190614712565b67ffffffffffffffff161115612d8e5760405162461bcd60e51b815260206004820152604c60248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365466f72636560448201527f42617463683a20466f72636564206261746368206973206e6f7420696e20746960648201527f6d656f757420706572696f640000000000000000000000000000000000000000608482015260a4016107d3565b8151805160209182012081840151604080519384018890528301919091526060808301919091524260c01b7fffffffffffffffff00000000000000000000000000000000000000000000000016608083015233901b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166088820152609c016040516020818303038152906040528051906020012093508580612e3090614527565b96505050508080612e4090614567565b915050612b73565b50606880544267ffffffffffffffff9081167fffffffffffffffffffffffffffffffff000000000000000000000000000000009092169190911768010000000000000000868316818102929092177fffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff1670010000000000000000000000000000000087851602178455600091825260676020526040808320869055935493519304909116917f648a61dd2438f072f5a1960939abd30f37aea80d2e94c9792ad142d3e0a490a49190a25050505050565b60655460ff16612f905760405162461bcd60e51b815260206004820152603b60248201527f456d657267656e63794d616e616765723a3a6966456d657267656e637953746160448201527f74653a206f6e6c7920696620656d657267656e6379207374617465000000000060648201526084016107d3565b60705473ffffffffffffffffffffffffffffffffffffffff16331461301d5760405162461bcd60e51b815260206004820152603d60248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7953656375726974794360448201527f6f756e63696c3a206f6e6c7920736563757269747920636f756e63696c00000060648201526084016107d3565b607160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dbc169766040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561308757600080fd5b505af115801561309b573d6000803e3d6000fd5b5050505061090561394b565b60655460ff16156131465760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a4016107d3565b6069547c0100000000000000000000000000000000000000000000000000000000900460ff1615156001146132095760405162461bcd60e51b815260206004820152604860248201527f50726f6f664f66456666696369656e63793a3a6973466f72636542617463684160448201527f6c6c6f7765643a206f6e6c7920696620666f726365206261746368206973206160648201527f7661696c61626c65000000000000000000000000000000000000000000000000608482015260a4016107d3565b6000613213612180565b90508181111561328b5760405162461bcd60e51b815260206004820152602f60248201527f50726f6f664f66456666696369656e63793a3a666f72636542617463683a206e60448201527f6f7420656e6f756768206d61746963000000000000000000000000000000000060648201526084016107d3565b61ea608351106133035760405162461bcd60e51b815260206004820152603a60248201527f50726f6f664f66456666696369656e63793a3a666f72636542617463683a205460448201527f72616e73616374696f6e73206279746573206f766572666c6f7700000000000060648201526084016107d3565b60655461332d90610100900473ffffffffffffffffffffffffffffffffffffffff16333084613735565b606a54604080517f3ed691ef000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff1691633ed691ef9160048083019260209291908290030181865afa15801561339d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133c1919061454e565b60688054919250780100000000000000000000000000000000000000000000000090910467ffffffffffffffff169060186133fb83614527565b91906101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550508380519060200120814260405160200161347493929190928352602083019190915260c01b7fffffffffffffffff00000000000000000000000000000000000000000000000016604082015260480190565b60408051808303601f1901815291815281516020928301206068547801000000000000000000000000000000000000000000000000900467ffffffffffffffff166000908152606690935291205532330361354457606854604080518381523360208201526060918101829052600091810191909152780100000000000000000000000000000000000000000000000090910467ffffffffffffffff16907ff94bb37db835f1ab585ee00041849a09b12cd081d77fa15ca070757619cbc9319060800160405180910390a26135a1565b606860189054906101000a900467ffffffffffffffff1667ffffffffffffffff167ff94bb37db835f1ab585ee00041849a09b12cd081d77fa15ca070757619cbc931823387604051613598939291906148b4565b60405180910390a25b50505050565b6135af613644565b73ffffffffffffffffffffffffffffffffffffffff81166136385760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016107d3565b6136418161384e565b50565b60335473ffffffffffffffffffffffffffffffffffffffff1633146109055760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016107d3565b607160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632072f6c56040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561371557600080fd5b505af1158015613729573d6000803e3d6000fd5b50505050610905613a16565b60405173ffffffffffffffffffffffffffffffffffffffff808516602483015283166044820152606481018290526135a19085907f23b872dd00000000000000000000000000000000000000000000000000000000906084015b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152613b0b565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526138499084907fa9059cbb000000000000000000000000000000000000000000000000000000009060640161378f565b505050565b6033805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff166139425760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016107d3565b6109053361384e565b60655460ff166139c35760405162461bcd60e51b815260206004820152603b60248201527f456d657267656e63794d616e616765723a3a6966456d657267656e637953746160448201527f74653a206f6e6c7920696620656d657267656e6379207374617465000000000060648201526084016107d3565b606580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690556040517f1e5e34eea33501aecf2ebec9fe0e884a40804275ea7fe10b2ba084c8374308b390600090a1565b60655460ff1615613ab55760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a4016107d3565b606580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556040517f2261efe5aef6fedc1fd1550b25facc9181745623049c7901287030b9ad1a549790600090a1565b6000613b6d826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16613bfd9092919063ffffffff16565b8051909150156138495780806020019051810190613b8b91906146f5565b6138495760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016107d3565b6060613c0c8484600085613c16565b90505b9392505050565b606082471015613c8e5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c000000000000000000000000000000000000000000000000000060648201526084016107d3565b73ffffffffffffffffffffffffffffffffffffffff85163b613cf25760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016107d3565b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051613d1b919061461c565b60006040518083038185875af1925050503d8060008114613d58576040519150601f19603f3d011682016040523d82523d6000602084013e613d5d565b606091505b5091509150613d6d828286613d78565b979650505050505050565b60608315613d87575081613c0f565b825115613d975782518084602001fd5b8160405162461bcd60e51b81526004016107d39190613e09565b60005b83811015613dcc578181015183820152602001613db4565b838111156135a15750506000910152565b60008151808452613df5816020860160208601613db1565b601f01601f19169290920160200192915050565b602081526000613c0f6020830184613ddd565b73ffffffffffffffffffffffffffffffffffffffff8116811461364157600080fd5b8035613e4981613e1c565b919050565b600060208284031215613e6057600080fd5b8135613c0f81613e1c565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516080810167ffffffffffffffff81118282101715613ebd57613ebd613e6b565b60405290565b6040516060810167ffffffffffffffff81118282101715613ebd57613ebd613e6b565b604051601f8201601f1916810167ffffffffffffffff81118282101715613f0f57613f0f613e6b565b604052919050565b600067ffffffffffffffff821115613f3157613f31613e6b565b5060051b60200190565b600082601f830112613f4c57600080fd5b813567ffffffffffffffff811115613f6657613f66613e6b565b613f796020601f19601f84011601613ee6565b818152846020838601011115613f8e57600080fd5b816020850160208301376000918101602001919091529392505050565b803567ffffffffffffffff81168114613e4957600080fd5b60006020808385031215613fd657600080fd5b823567ffffffffffffffff80821115613fee57600080fd5b818501915085601f83011261400257600080fd5b813561401561401082613f17565b613ee6565b81815260059190911b8301840190848101908883111561403457600080fd5b8585015b838110156140cd578035858111156140505760008081fd5b86016080818c03601f19018113156140685760008081fd5b614070613e9a565b89830135888111156140825760008081fd5b6140908e8c83870101613f3b565b8252506040808401358b83015260606140aa818601613fab565b828401526140b9848601613fab565b908301525085525050918601918601614038565b5098975050505050505050565b6000602082840312156140ec57600080fd5b613c0f82613fab565b806040810183101561410657600080fd5b92915050565b6000806000806000806000610180888a03121561412857600080fd5b61413188613fab565b965061413f60208901613fab565b9550604088013594506060880135935061415c8960808a016140f5565b925061014088018981111561417057600080fd5b60c0890192506141808a826140f5565b91505092959891949750929550565b600080600080608085870312156141a557600080fd5b6141ae85613fab565b93506141bc60208601613fab565b93969395505050506040820135916060013590565b801515811461364157600080fd5b8035613e49816141d1565b60008060008060008060008060008060006101608c8e03121561420c57600080fd5b6142158c613e3e565b9a5061422360208d01613e3e565b995061423160408d01613e3e565b985060608c0135975061424660808d01613e3e565b965061425460a08d016141df565b955067ffffffffffffffff8060c08e0135111561427057600080fd5b6142808e60c08f01358f01613f3b565b955061428e60e08e01613fab565b9450806101008e013511156142a257600080fd5b506142b48d6101008e01358e01613f3b565b92506142c36101208d01613e3e565b91506142d26101408d01613e3e565b90509295989b509295989b9093969950565b6000602082840312156142f657600080fd5b8135613c0f816141d1565b60006020828403121561431357600080fd5b813567ffffffffffffffff81111561432a57600080fd5b61433684828501613f3b565b949350505050565b6000602080838503121561435157600080fd5b823567ffffffffffffffff8082111561436957600080fd5b818501915085601f83011261437d57600080fd5b813561438b61401082613f17565b81815260059190911b830184019084810190888311156143aa57600080fd5b8585015b838110156140cd578035858111156143c65760008081fd5b86016060818c03601f19018113156143de5760008081fd5b6143e6613ec3565b89830135888111156143f85760008081fd5b6144068e8c83870101613f3b565b8252506040808401358b83015261441e838501613fab565b90820152855250509186019186016143ae565b6000806040838503121561444457600080fd5b823567ffffffffffffffff81111561445b57600080fd5b61446785828601613f3b565b95602094909401359450505050565b600181811c9082168061448a57607f821691505b6020821081036144c3577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600067ffffffffffffffff808316818103614544576145446144f8565b6001019392505050565b60006020828403121561456057600080fd5b5051919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203614598576145986144f8565b5060010190565b600067ffffffffffffffff838116908316818110156145c0576145c06144f8565b039392505050565b6000828210156145da576145da6144f8565b500390565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614617576146176144f8565b500290565b6000825161462e818460208701613db1565b9190910192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008261467657614676614638565b500690565b61012081016040808784376000838201818152879190815b60028110156146b357848483379084018281529284019290600101614693565b5050828760c0870137610100850181815286935091505b60018110156146e95782518252602092830192909101906001016146ca565b50505095945050505050565b60006020828403121561470757600080fd5b8151613c0f816141d1565b600067ffffffffffffffff808316818516808303821115614735576147356144f8565b01949350505050565b601f82111561384957600081815260208120601f850160051c810160208610156147655750805b601f850160051c820191505b8181101561478457828155600101614771565b505050505050565b815167ffffffffffffffff8111156147a6576147a6613e6b565b6147ba816147b48454614476565b8461473e565b602080601f83116001811461480d57600084156147d75750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b178555614784565b600085815260208120601f198616915b8281101561483c5788860151825594840194600190910190840161481d565b508582101561487857878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b60008261489757614897614638565b500490565b600082198211156148af576148af6144f8565b500190565b83815273ffffffffffffffffffffffffffffffffffffffff831660208201526060604082015260006148e96060830184613ddd565b9594505050505056fea26469706673582212203146999accd90085aed82493dac693741e15c8a3fe634147953b164c9909fc4764736f6c634300080f0033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106102c85760003560e01c80638c4a0af71161017b578063cfa8ed47116100d8578063e7a7ed021161008c578063eaeb077b11610071578063eaeb077b14610687578063f2fde38b1461069a578063f7552761146106ad57600080fd5b8063e7a7ed0214610637578063e8bf92ed1461066757600080fd5b8063d8d1091b116100bd578063d8d1091b146105ef578063d8f54db014610602578063dbc169761461062f57600080fd5b8063cfa8ed47146105a3578063d02103ca146105cf57600080fd5b8063adc879e91161012f578063b4d63f5811610114578063b4d63f581461054b578063b6b0b0971461056b578063c89e42df1461059057600080fd5b8063adc879e91461052e578063b02286c01461054257600080fd5b806399f5634e1161016057806399f5634e146104fc578063a3c573eb14610504578063ab9fc5ef1461052457600080fd5b80638c4a0af7146104cb5780638da5cb5b146104de57600080fd5b8063542028d511610229578063715018a6116101dd57806379847057116101c2578063798470571461049c5780637fcb3653146104a457806381df7d3f146104b857600080fd5b8063715018a6146104815780637152facf1461048957600080fd5b80636766f09d1161020e5780636766f09d1461043b5780636b8616ce1461044e5780636ff512cc1461046e57600080fd5b8063542028d51461042057806355b925e61461042857600080fd5b806327eb6c0f11610280578063423fa85611610265578063423fa856146103aa57806345605267146103ca5780635392c5e0146103f257600080fd5b806327eb6c0f146103525780633c1582671461039757600080fd5b806319d8ac61116102b157806319d8ac61146103085780631c1083e2146103355780632072f6c51461034a57600080fd5b8063107bf28c146102cd57806315064c96146102eb575b600080fd5b6102d56106bc565b6040516102e29190613e09565b60405180910390f35b6065546102f89060ff1681565b60405190151581526020016102e2565b60685461031c9067ffffffffffffffff1681565b60405167ffffffffffffffff90911681526020016102e2565b610348610343366004613e4e565b61074a565b005b610348610856565b6070546103729073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016102e2565b6103486103a5366004613fc3565b610907565b60685461031c9068010000000000000000900467ffffffffffffffff1681565b60685461031c90700100000000000000000000000000000000900467ffffffffffffffff1681565b6104126104003660046140da565b606b6020526000908152604090205481565b6040519081526020016102e2565b6102d56111fe565b61034861043636600461410c565b61120b565b61034861044936600461410c565b6117d4565b61041261045c3660046140da565b60666020526000908152604090205481565b61034861047c366004613e4e565b611e1e565b610348611f38565b6102d561049736600461418f565b611f4a565b610412612180565b60695461031c9067ffffffffffffffff1681565b6103486104c63660046141ea565b6121fa565b6103486104d93660046142e4565b612553565b60335473ffffffffffffffffffffffffffffffffffffffff16610372565b61041261266d565b6071546103729073ffffffffffffffffffffffffffffffffffffffff1681565b61031c62093a8081565b606e5461031c9067ffffffffffffffff1681565b61041261ea6081565b6104126105593660046140da565b60676020526000908152604090205481565b60655461037290610100900473ffffffffffffffffffffffffffffffffffffffff1681565b61034861059e366004614301565b61279e565b6069546103729068010000000000000000900473ffffffffffffffffffffffffffffffffffffffff1681565b606a546103729073ffffffffffffffffffffffffffffffffffffffff1681565b6103486105fd36600461433e565b612873565b6069546102f8907c0100000000000000000000000000000000000000000000000000000000900460ff1681565b610348612f18565b60685461031c907801000000000000000000000000000000000000000000000000900467ffffffffffffffff1681565b606c546103729073ffffffffffffffffffffffffffffffffffffffff1681565b610348610695366004614431565b6130a7565b6103486106a8366004613e4e565b6135a7565b61041267016345785d8a000081565b606f80546106c990614476565b80601f01602080910402602001604051908101604052809291908181526020018280546106f590614476565b80156107425780601f1061071757610100808354040283529160200191610742565b820191906000526020600020905b81548152906001019060200180831161072557829003601f168201915b505050505081565b60705473ffffffffffffffffffffffffffffffffffffffff1633146107dc5760405162461bcd60e51b815260206004820152603d60248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7953656375726974794360448201527f6f756e63696c3a206f6e6c7920736563757269747920636f756e63696c00000060648201526084015b60405180910390fd5b607080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f373a9d1d60f01a33ff86d540991f09f5c5d7482656794de80be077c5eb9693d9906020015b60405180910390a150565b60655460ff16156108f55760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a4016107d3565b6108fd613644565b6109056136ab565b565b60655460ff16156109a65760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a4016107d3565b60695468010000000000000000900473ffffffffffffffffffffffffffffffffffffffff163314610a3f5760405162461bcd60e51b815260206004820152603f60248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7954727573746564536560448201527f7175656e6365723a206f6e6c7920747275737465642073657175656e6365720060648201526084016107d3565b805160685467ffffffffffffffff680100000000000000008204811660008181526067602052604081205483851694929370010000000000000000000000000000000090930490921691905b85811015610fef576000878281518110610aa757610aa76144c9565b602002602001015190506000816060015167ffffffffffffffff161115610cc05783610ad281614527565b945050600081600001518051906020012082602001518360600151604051602001610b3593929190928352602083019190915260c01b7fffffffffffffffff00000000000000000000000000000000000000000000000016604082015260480190565b60408051601f19818403018152918152815160209283012067ffffffffffffffff8816600090815260669093529120549091508114610c025760405162461bcd60e51b815260206004820152604260248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365426174636860448201527f65733a20466f7263656420626174636865732064617461206d757374206d617460648201527f6368000000000000000000000000000000000000000000000000000000000000608482015260a4016107d3565b816060015167ffffffffffffffff16826040015167ffffffffffffffff161015610cba5760405162461bcd60e51b815260206004820152605d60248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365426174636860448201527f65733a20466f7263656420626174636865732074696d657374616d70206d757360648201527f7420626520626967676572206f7220657175616c207468616e206d696e000000608482015260a4016107d3565b50610e5a565b60208101511580610d6f5750606a5460208201516040517f257b363200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9092169163257b363291610d299160040190815260200190565b6020604051808303816000875af1158015610d48573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d6c919061454e565b15155b610de15760405162461bcd60e51b815260206004820152603f60248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365426174636860448201527f65733a20476c6f62616c206578697420726f6f74206d7573742065786973740060648201526084016107d3565b80515161ea6011610e5a5760405162461bcd60e51b815260206004820152603f60248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365426174636860448201527f65733a205472616e73616374696f6e73206279746573206f766572666c6f770060648201526084016107d3565b8567ffffffffffffffff16816040015167ffffffffffffffff1610158015610e90575042816040015167ffffffffffffffff1611155b610f285760405162461bcd60e51b815260206004820152604260248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365426174636860448201527f65733a2054696d657374616d70206d75737420626520696e736964652072616e60648201527f6765000000000000000000000000000000000000000000000000000000000000608482015260a4016107d3565b805180516020918201208183015160408085015181519485018890529084019290925260608084019190915260c09190911b7fffffffffffffffff00000000000000000000000000000000000000000000000016608083015233901b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166088820152609c016040516020818303038152906040528051906020012092508480610fd190614527565b95505080604001519550508080610fe790614567565b915050610a8b565b5060685467ffffffffffffffff7801000000000000000000000000000000000000000000000000909104811690831611156110925760405162461bcd60e51b815260206004820152603a60248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365426174636860448201527f65733a20466f7263652062617463686573206f766572666c6f7700000000000060648201526084016107d3565b6068546000906110c090700100000000000000000000000000000000900467ffffffffffffffff168461459f565b6110d49067ffffffffffffffff16876145c8565b6068805467ffffffffffffffff868116700100000000000000000000000000000000027fffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff8983166801000000000000000081027fffffffffffffffffffffffffffffffff00000000000000000000000000000000909516938c1693909317939093179290921691909117909155600090815260676020526040902083905590506111b1333061118b8467016345785d8a00006145df565b606554610100900473ffffffffffffffffffffffffffffffffffffffff16929190613735565b6068546040516801000000000000000090910467ffffffffffffffff16907f303446e6a8cb73c83dff421c0b1d5e5ce0719dab1bff13660fc254e58cc17fce90600090a250505050505050565b606d80546106c990614476565b60655460ff16156112aa5760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a4016107d3565b60695467ffffffffffffffff90811690881611156113565760405162461bcd60e51b815260206004820152605b60248201527f50726f6f664f66456666696369656e63793a3a7665726966794261746368657360448201527f3a20696e69744e756d4261746368206d757374206265206c657373206f72206560648201527f7175616c207468616e206c617374566572696669656442617463680000000000608482015260a4016107d3565b60695467ffffffffffffffff908116908716116114015760405162461bcd60e51b815260206004820152605560248201527f50726f6f664f66456666696369656e63793a3a7665726966794261746368657360448201527f3a2066696e616c4e65774261746368206d75737420626520626967676572207460648201527f68616e206c617374566572696669656442617463680000000000000000000000608482015260a4016107d3565b67ffffffffffffffff87166000908152606b60205260409020546114b35760405162461bcd60e51b815260206004820152604860248201527f50726f6f664f66456666696369656e63793a3a7665726966794261746368657360448201527f3a20696e69744e756d426174636820737461746520726f6f7420646f6573206e60648201527f6f74206578697374000000000000000000000000000000000000000000000000608482015260a4016107d3565b60006114c188888888611f4a565b905060007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000016002836040516114f6919061461c565b602060405180830381855afa158015611513573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190611536919061454e565b6115409190614667565b606c546040805160208101825283815290517f43753b4d00000000000000000000000000000000000000000000000000000000815292935073ffffffffffffffffffffffffffffffffffffffff909116916343753b4d916115aa918991899189919060040161467b565b602060405180830381865afa1580156115c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115eb91906146f5565b61165d5760405162461bcd60e51b815260206004820152602f60248201527f50726f6f664f66456666696369656e63793a3a7665726966794261746368657360448201527f3a20494e56414c49445f50524f4f46000000000000000000000000000000000060648201526084016107d3565b6069546116bb90339061167a9067ffffffffffffffff168b61459f565b67ffffffffffffffff1661168c61266d565b61169691906145df565b606554610100900473ffffffffffffffffffffffffffffffffffffffff1691906137f3565b606980547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff8a169081179091556000908152606b602052604090819020879055606a5490517f33d6247d0000000000000000000000000000000000000000000000000000000081526004810189905273ffffffffffffffffffffffffffffffffffffffff909116906333d6247d90602401600060405180830381600087803b15801561177057600080fd5b505af1158015611784573d6000803e3d6000fd5b505060405188815233925067ffffffffffffffff8b1691507f9c72852172521097ba7e1482e6b44b351323df0155f97f4ea18fcec28e1f59669060200160405180910390a3505050505050505050565b60655460ff16156118735760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a4016107d3565b8567ffffffffffffffff168767ffffffffffffffff16106119225760405162461bcd60e51b815260206004820152605660248201527f50726f6f664f66456666696369656e63793a3a70726f6f66446966666572656e60448201527f7453746174653a2066696e616c4e65774261746368206d75737420626520626960648201527f67676572207468616e20696e69744e756d426174636800000000000000000000608482015260a4016107d3565b60695467ffffffffffffffff90811690871611156119f45760405162461bcd60e51b815260206004820152606260248201527f50726f6f664f66456666696369656e63793a3a70726f6f66446966666572656e60448201527f7453746174653a2066696e616c4e65774261746368206d757374206265206c6560648201527f7373206f7220657175616c207468616e206c617374566572696669656442617460848201527f636800000000000000000000000000000000000000000000000000000000000060a482015260c4016107d3565b67ffffffffffffffff87166000908152606b6020526040902054611aa65760405162461bcd60e51b815260206004820152604e60248201527f50726f6f664f66456666696369656e63793a3a70726f6f66446966666572656e60448201527f7453746174653a20696e69744e756d426174636820737461746520726f6f742060648201527f646f6573206e6f74206578697374000000000000000000000000000000000000608482015260a4016107d3565b67ffffffffffffffff86166000908152606b6020526040902054611b585760405162461bcd60e51b815260206004820152604f60248201527f50726f6f664f66456666696369656e63793a3a70726f6f66446966666572656e60448201527f7453746174653a2066696e616c4e6577426174636820737461746520726f6f7460648201527f20646f6573206e6f742065786973740000000000000000000000000000000000608482015260a4016107d3565b6000611b6688888888611f4a565b905060007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001600283604051611b9b919061461c565b602060405180830381855afa158015611bb8573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190611bdb919061454e565b611be59190614667565b606c546040805160208101825283815290517f43753b4d00000000000000000000000000000000000000000000000000000000815292935073ffffffffffffffffffffffffffffffffffffffff909116916343753b4d91611c4f918991899189919060040161467b565b602060405180830381865afa158015611c6c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c9091906146f5565b611d025760405162461bcd60e51b815260206004820152603560248201527f50726f6f664f66456666696369656e63793a3a70726f6f66446966666572656e60448201527f7453746174653a20494e56414c49445f50524f4f46000000000000000000000060648201526084016107d3565b67ffffffffffffffff88166000908152606b6020526040902054869003611db75760405162461bcd60e51b815260206004820152605960248201527f50726f6f664f66456666696369656e63793a3a70726f6f66446966666572656e60448201527f7453746174653a2073746f72656420726f6f74206d757374206265206469666660648201527f6572656e74207468616e206e657720737461746520726f6f7400000000000000608482015260a4016107d3565b67ffffffffffffffff88166000908152606b60209081526040918290205482519081529081018890527fe579d6d18f02941e1d0f59bff70f1b2c894edc991badab38343786df2846fe55910160405180910390a1611e136136ab565b505050505050505050565b60695468010000000000000000900473ffffffffffffffffffffffffffffffffffffffff163314611eb75760405162461bcd60e51b815260206004820152603f60248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7954727573746564536560448201527f7175656e6365723a206f6e6c7920747275737465642073657175656e6365720060648201526084016107d3565b606980547fffffffff0000000000000000000000000000000000000000ffffffffffffffff166801000000000000000073ffffffffffffffffffffffffffffffffffffffff8416908102919091179091556040519081527ff54144f9611984021529f814a1cb6a41e22c58351510a0d9f7e822618abb9cc09060200161084b565b611f40613644565b610905600061384e565b67ffffffffffffffff808516600081815260676020526040808220549387168252902054606092911580611f7d57508115155b6120155760405162461bcd60e51b815260206004820152604560248201527f50726f6f664f66456666696369656e63793a3a676574496e707574536e61726b60448201527f42797465733a206f6c64416363496e7075744861736820646f6573206e6f742060648201527f6578697374000000000000000000000000000000000000000000000000000000608482015260a4016107d3565b806120ae5760405162461bcd60e51b815260206004820152604560248201527f50726f6f664f66456666696369656e63793a3a676574496e707574536e61726b60448201527f42797465733a206e6577416363496e7075744861736820646f6573206e6f742060648201527f6578697374000000000000000000000000000000000000000000000000000000608482015260a4016107d3565b67ffffffffffffffff87166000908152606b602090815260409182902054606e5492517fffffffffffffffffffffffffffffffffffffffff0000000000000000000000003360601b16928101929092526034820152605481018490527fffffffffffffffff00000000000000000000000000000000000000000000000060c08a811b8216607484015292831b8116607c8301526084820187905260a4820184905260c482018890529188901b90911660e482015260ec0160405160208183030381529060405292505050949350505050565b60685460009067ffffffffffffffff70010000000000000000000000000000000082048116916121cf917801000000000000000000000000000000000000000000000000909104166001614712565b6121d9919061459f565b6121f59067ffffffffffffffff16670de0b6b3a76400006145df565b905090565b600054610100900460ff161580801561221a5750600054600160ff909116105b806122345750303b158015612234575060005460ff166001145b6122a65760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016107d3565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561230457600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b606a80547fffffffffffffffffffffffff000000000000000000000000000000000000000090811673ffffffffffffffffffffffffffffffffffffffff8f811691909117909255606580547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101008f851602179055606c80549091168c831617905560008052606b6020527fc8cc8bda7ad4886bea3ebbdafa02e79d37c39bf4011696b26a31a0802fd9458b8a9055606980547fffffff000000000000000000000000000000000000000000ffffffffffffffff1668010000000000000000928b16929092027fffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff16919091177c010000000000000000000000000000000000000000000000000000000089151502179055606d612443878261478c565b50606e80547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff8716179055606f612484858261478c565b506071805473ffffffffffffffffffffffffffffffffffffffff8086167fffffffffffffffffffffffff00000000000000000000000000000000000000009283161790925560708054928516929091169190911790556124e26138c5565b801561254557600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050505050565b60695468010000000000000000900473ffffffffffffffffffffffffffffffffffffffff1633146125ec5760405162461bcd60e51b815260206004820152603f60248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7954727573746564536560448201527f7175656e6365723a206f6e6c7920747275737465642073657175656e6365720060648201526084016107d3565b606980548215157c0100000000000000000000000000000000000000000000000000000000027fffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff9091161790556040517fbacda50a4a8575be1d91a7ebe29ee45056f3a94f12a2281eb6b43afa33bcefe69061084b90831515815260200190565b6065546040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152600091829161010090910473ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa1580156126e4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612708919061454e565b60695460685491925060009167ffffffffffffffff9182169168010000000000000000820481169161276d917001000000000000000000000000000000008204811691780100000000000000000000000000000000000000000000000090041661459f565b6127779190614712565b612781919061459f565b67ffffffffffffffff1690506127978183614888565b9250505090565b60695468010000000000000000900473ffffffffffffffffffffffffffffffffffffffff1633146128375760405162461bcd60e51b815260206004820152603f60248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7954727573746564536560448201527f7175656e6365723a206f6e6c7920747275737465642073657175656e6365720060648201526084016107d3565b606d612843828261478c565b507f6b8f723a4c7a5335cafae8a598a0aa0301be1387c037dccc085b62add6448b208160405161084b9190613e09565b60655460ff16156129125760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a4016107d3565b6069547c0100000000000000000000000000000000000000000000000000000000900460ff1615156001146129d55760405162461bcd60e51b815260206004820152604860248201527f50726f6f664f66456666696369656e63793a3a6973466f72636542617463684160448201527f6c6c6f7765643a206f6e6c7920696620666f726365206261746368206973206160648201527f7661696c61626c65000000000000000000000000000000000000000000000000608482015260a4016107d3565b805180612a705760405162461bcd60e51b815260206004820152604260248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365466f72636560448201527f42617463683a204d75737420666f726365206174206c6561737420312062617460648201527f6368000000000000000000000000000000000000000000000000000000000000608482015260a4016107d3565b60685467ffffffffffffffff78010000000000000000000000000000000000000000000000008204811691612abb91849170010000000000000000000000000000000090041661489c565b1115612b2f5760405162461bcd60e51b815260206004820152603a60248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365466f72636560448201527f42617463683a20466f72636520626174636820696e76616c696400000000000060648201526084016107d3565b60685467ffffffffffffffff680100000000000000008204811660008181526067602052604081205491937001000000000000000000000000000000009004909216915b84811015612e48576000868281518110612b8f57612b8f6144c9565b602002602001015190508380612ba490614527565b825180516020918201208185015160408087015181519485019390935283015260c01b7fffffffffffffffff0000000000000000000000000000000000000000000000001660608201529095506000915060680160408051601f19818403018152918152815160209283012067ffffffffffffffff8816600090815260669093529120549091508114612cc55760405162461bcd60e51b815260206004820152604760248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365466f72636560448201527f426174636865733a20466f7263656420626174636865732064617461206d757360648201527f74206d6174636800000000000000000000000000000000000000000000000000608482015260a4016107d3565b612cd06001886145c8565b8303612d8e574262093a808360400151612cea9190614712565b67ffffffffffffffff161115612d8e5760405162461bcd60e51b815260206004820152604c60248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365466f72636560448201527f42617463683a20466f72636564206261746368206973206e6f7420696e20746960648201527f6d656f757420706572696f640000000000000000000000000000000000000000608482015260a4016107d3565b8151805160209182012081840151604080519384018890528301919091526060808301919091524260c01b7fffffffffffffffff00000000000000000000000000000000000000000000000016608083015233901b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166088820152609c016040516020818303038152906040528051906020012093508580612e3090614527565b96505050508080612e4090614567565b915050612b73565b50606880544267ffffffffffffffff9081167fffffffffffffffffffffffffffffffff000000000000000000000000000000009092169190911768010000000000000000868316818102929092177fffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff1670010000000000000000000000000000000087851602178455600091825260676020526040808320869055935493519304909116917f648a61dd2438f072f5a1960939abd30f37aea80d2e94c9792ad142d3e0a490a49190a25050505050565b60655460ff16612f905760405162461bcd60e51b815260206004820152603b60248201527f456d657267656e63794d616e616765723a3a6966456d657267656e637953746160448201527f74653a206f6e6c7920696620656d657267656e6379207374617465000000000060648201526084016107d3565b60705473ffffffffffffffffffffffffffffffffffffffff16331461301d5760405162461bcd60e51b815260206004820152603d60248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7953656375726974794360448201527f6f756e63696c3a206f6e6c7920736563757269747920636f756e63696c00000060648201526084016107d3565b607160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dbc169766040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561308757600080fd5b505af115801561309b573d6000803e3d6000fd5b5050505061090561394b565b60655460ff16156131465760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a4016107d3565b6069547c0100000000000000000000000000000000000000000000000000000000900460ff1615156001146132095760405162461bcd60e51b815260206004820152604860248201527f50726f6f664f66456666696369656e63793a3a6973466f72636542617463684160448201527f6c6c6f7765643a206f6e6c7920696620666f726365206261746368206973206160648201527f7661696c61626c65000000000000000000000000000000000000000000000000608482015260a4016107d3565b6000613213612180565b90508181111561328b5760405162461bcd60e51b815260206004820152602f60248201527f50726f6f664f66456666696369656e63793a3a666f72636542617463683a206e60448201527f6f7420656e6f756768206d61746963000000000000000000000000000000000060648201526084016107d3565b61ea608351106133035760405162461bcd60e51b815260206004820152603a60248201527f50726f6f664f66456666696369656e63793a3a666f72636542617463683a205460448201527f72616e73616374696f6e73206279746573206f766572666c6f7700000000000060648201526084016107d3565b60655461332d90610100900473ffffffffffffffffffffffffffffffffffffffff16333084613735565b606a54604080517f3ed691ef000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff1691633ed691ef9160048083019260209291908290030181865afa15801561339d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133c1919061454e565b60688054919250780100000000000000000000000000000000000000000000000090910467ffffffffffffffff169060186133fb83614527565b91906101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550508380519060200120814260405160200161347493929190928352602083019190915260c01b7fffffffffffffffff00000000000000000000000000000000000000000000000016604082015260480190565b60408051808303601f1901815291815281516020928301206068547801000000000000000000000000000000000000000000000000900467ffffffffffffffff166000908152606690935291205532330361354457606854604080518381523360208201526060918101829052600091810191909152780100000000000000000000000000000000000000000000000090910467ffffffffffffffff16907ff94bb37db835f1ab585ee00041849a09b12cd081d77fa15ca070757619cbc9319060800160405180910390a26135a1565b606860189054906101000a900467ffffffffffffffff1667ffffffffffffffff167ff94bb37db835f1ab585ee00041849a09b12cd081d77fa15ca070757619cbc931823387604051613598939291906148b4565b60405180910390a25b50505050565b6135af613644565b73ffffffffffffffffffffffffffffffffffffffff81166136385760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016107d3565b6136418161384e565b50565b60335473ffffffffffffffffffffffffffffffffffffffff1633146109055760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016107d3565b607160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632072f6c56040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561371557600080fd5b505af1158015613729573d6000803e3d6000fd5b50505050610905613a16565b60405173ffffffffffffffffffffffffffffffffffffffff808516602483015283166044820152606481018290526135a19085907f23b872dd00000000000000000000000000000000000000000000000000000000906084015b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152613b0b565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526138499084907fa9059cbb000000000000000000000000000000000000000000000000000000009060640161378f565b505050565b6033805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff166139425760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016107d3565b6109053361384e565b60655460ff166139c35760405162461bcd60e51b815260206004820152603b60248201527f456d657267656e63794d616e616765723a3a6966456d657267656e637953746160448201527f74653a206f6e6c7920696620656d657267656e6379207374617465000000000060648201526084016107d3565b606580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690556040517f1e5e34eea33501aecf2ebec9fe0e884a40804275ea7fe10b2ba084c8374308b390600090a1565b60655460ff1615613ab55760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a4016107d3565b606580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556040517f2261efe5aef6fedc1fd1550b25facc9181745623049c7901287030b9ad1a549790600090a1565b6000613b6d826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16613bfd9092919063ffffffff16565b8051909150156138495780806020019051810190613b8b91906146f5565b6138495760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016107d3565b6060613c0c8484600085613c16565b90505b9392505050565b606082471015613c8e5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c000000000000000000000000000000000000000000000000000060648201526084016107d3565b73ffffffffffffffffffffffffffffffffffffffff85163b613cf25760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016107d3565b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051613d1b919061461c565b60006040518083038185875af1925050503d8060008114613d58576040519150601f19603f3d011682016040523d82523d6000602084013e613d5d565b606091505b5091509150613d6d828286613d78565b979650505050505050565b60608315613d87575081613c0f565b825115613d975782518084602001fd5b8160405162461bcd60e51b81526004016107d39190613e09565b60005b83811015613dcc578181015183820152602001613db4565b838111156135a15750506000910152565b60008151808452613df5816020860160208601613db1565b601f01601f19169290920160200192915050565b602081526000613c0f6020830184613ddd565b73ffffffffffffffffffffffffffffffffffffffff8116811461364157600080fd5b8035613e4981613e1c565b919050565b600060208284031215613e6057600080fd5b8135613c0f81613e1c565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516080810167ffffffffffffffff81118282101715613ebd57613ebd613e6b565b60405290565b6040516060810167ffffffffffffffff81118282101715613ebd57613ebd613e6b565b604051601f8201601f1916810167ffffffffffffffff81118282101715613f0f57613f0f613e6b565b604052919050565b600067ffffffffffffffff821115613f3157613f31613e6b565b5060051b60200190565b600082601f830112613f4c57600080fd5b813567ffffffffffffffff811115613f6657613f66613e6b565b613f796020601f19601f84011601613ee6565b818152846020838601011115613f8e57600080fd5b816020850160208301376000918101602001919091529392505050565b803567ffffffffffffffff81168114613e4957600080fd5b60006020808385031215613fd657600080fd5b823567ffffffffffffffff80821115613fee57600080fd5b818501915085601f83011261400257600080fd5b813561401561401082613f17565b613ee6565b81815260059190911b8301840190848101908883111561403457600080fd5b8585015b838110156140cd578035858111156140505760008081fd5b86016080818c03601f19018113156140685760008081fd5b614070613e9a565b89830135888111156140825760008081fd5b6140908e8c83870101613f3b565b8252506040808401358b83015260606140aa818601613fab565b828401526140b9848601613fab565b908301525085525050918601918601614038565b5098975050505050505050565b6000602082840312156140ec57600080fd5b613c0f82613fab565b806040810183101561410657600080fd5b92915050565b6000806000806000806000610180888a03121561412857600080fd5b61413188613fab565b965061413f60208901613fab565b9550604088013594506060880135935061415c8960808a016140f5565b925061014088018981111561417057600080fd5b60c0890192506141808a826140f5565b91505092959891949750929550565b600080600080608085870312156141a557600080fd5b6141ae85613fab565b93506141bc60208601613fab565b93969395505050506040820135916060013590565b801515811461364157600080fd5b8035613e49816141d1565b60008060008060008060008060008060006101608c8e03121561420c57600080fd5b6142158c613e3e565b9a5061422360208d01613e3e565b995061423160408d01613e3e565b985060608c0135975061424660808d01613e3e565b965061425460a08d016141df565b955067ffffffffffffffff8060c08e0135111561427057600080fd5b6142808e60c08f01358f01613f3b565b955061428e60e08e01613fab565b9450806101008e013511156142a257600080fd5b506142b48d6101008e01358e01613f3b565b92506142c36101208d01613e3e565b91506142d26101408d01613e3e565b90509295989b509295989b9093969950565b6000602082840312156142f657600080fd5b8135613c0f816141d1565b60006020828403121561431357600080fd5b813567ffffffffffffffff81111561432a57600080fd5b61433684828501613f3b565b949350505050565b6000602080838503121561435157600080fd5b823567ffffffffffffffff8082111561436957600080fd5b818501915085601f83011261437d57600080fd5b813561438b61401082613f17565b81815260059190911b830184019084810190888311156143aa57600080fd5b8585015b838110156140cd578035858111156143c65760008081fd5b86016060818c03601f19018113156143de5760008081fd5b6143e6613ec3565b89830135888111156143f85760008081fd5b6144068e8c83870101613f3b565b8252506040808401358b83015261441e838501613fab565b90820152855250509186019186016143ae565b6000806040838503121561444457600080fd5b823567ffffffffffffffff81111561445b57600080fd5b61446785828601613f3b565b95602094909401359450505050565b600181811c9082168061448a57607f821691505b6020821081036144c3577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600067ffffffffffffffff808316818103614544576145446144f8565b6001019392505050565b60006020828403121561456057600080fd5b5051919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203614598576145986144f8565b5060010190565b600067ffffffffffffffff838116908316818110156145c0576145c06144f8565b039392505050565b6000828210156145da576145da6144f8565b500390565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614617576146176144f8565b500290565b6000825161462e818460208701613db1565b9190910192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60008261467657614676614638565b500690565b61012081016040808784376000838201818152879190815b60028110156146b357848483379084018281529284019290600101614693565b5050828760c0870137610100850181815286935091505b60018110156146e95782518252602092830192909101906001016146ca565b50505095945050505050565b60006020828403121561470757600080fd5b8151613c0f816141d1565b600067ffffffffffffffff808316818516808303821115614735576147356144f8565b01949350505050565b601f82111561384957600081815260208120601f850160051c810160208610156147655750805b601f850160051c820191505b8181101561478457828155600101614771565b505050505050565b815167ffffffffffffffff8111156147a6576147a6613e6b565b6147ba816147b48454614476565b8461473e565b602080601f83116001811461480d57600084156147d75750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b178555614784565b600085815260208120601f198616915b8281101561483c5788860151825594840194600190910190840161481d565b508582101561487857878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b60008261489757614897614638565b500490565b600082198211156148af576148af6144f8565b500190565b83815273ffffffffffffffffffffffffffffffffffffffff831660208201526060604082015260006148e96060830184613ddd565b9594505050505056fea26469706673582212203146999accd90085aed82493dac693741e15c8a3fe634147953b164c9909fc4764736f6c634300080f0033", + "bytecode": "0x608060405234801561001057600080fd5b5061494a806100206000396000f3fe608060405234801561001057600080fd5b50600436106102c85760003560e01c80638da5cb5b1161017b578063cfa8ed47116100d8578063e7a7ed021161008c578063eaeb077b11610071578063eaeb077b14610687578063f2fde38b1461069a578063f7552761146106ad57600080fd5b8063e7a7ed0214610637578063e8bf92ed1461066757600080fd5b8063d8d1091b116100bd578063d8d1091b146105ef578063d8f54db014610602578063dbc169761461062f57600080fd5b8063cfa8ed47146105a3578063d02103ca146105cf57600080fd5b8063b02286c01161012f578063b6b0b09711610114578063b6b0b09714610558578063c3fd0f9c1461057d578063c89e42df1461059057600080fd5b8063b02286c01461052f578063b4d63f581461053857600080fd5b8063a3c573eb11610160578063a3c573eb146104f1578063ab9fc5ef14610511578063adc879e91461051b57600080fd5b80638da5cb5b146104cb57806399f5634e146104e957600080fd5b8063542028d5116102295780637152facf116101dd5780637fcb3653116101c25780637fcb36531461049157806381df7d3f146104a55780638c4a0af7146104b857600080fd5b80637152facf14610476578063798470571461048957600080fd5b80636b8616ce1161020e5780636b8616ce1461043b5780636ff512cc1461045b578063715018a61461046e57600080fd5b8063542028d51461042057806355b925e61461042857600080fd5b806327eb6c0f11610280578063423fa85611610265578063423fa856146103aa57806345605267146103ca5780635392c5e0146103f257600080fd5b806327eb6c0f146103525780633c1582671461039757600080fd5b806319d8ac61116102b157806319d8ac61146103085780631c1083e2146103355780632072f6c51461034a57600080fd5b8063107bf28c146102cd57806315064c96146102eb575b600080fd5b6102d56106bc565b6040516102e29190613e2c565b60405180910390f35b6065546102f89060ff1681565b60405190151581526020016102e2565b60685461031c9067ffffffffffffffff1681565b60405167ffffffffffffffff90911681526020016102e2565b610348610343366004613e78565b61074a565b005b610348610856565b6070546103729073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016102e2565b6103486103a5366004613fed565b610907565b60685461031c9068010000000000000000900467ffffffffffffffff1681565b60685461031c90700100000000000000000000000000000000900467ffffffffffffffff1681565b610412610400366004614104565b606b6020526000908152604090205481565b6040519081526020016102e2565b6102d5611297565b610348610436366004614136565b6112a4565b610412610449366004614104565b60666020526000908152604090205481565b610348610469366004613e78565b61186d565b610348611987565b6102d56104843660046141b9565b611999565b610412611bd0565b60695461031c9067ffffffffffffffff1681565b6103486104b3366004614214565b611c4a565b6103486104c636600461430e565b611fa3565b60335473ffffffffffffffffffffffffffffffffffffffff16610372565b6104126120bd565b6071546103729073ffffffffffffffffffffffffffffffffffffffff1681565b61031c62093a8081565b606e5461031c9067ffffffffffffffff1681565b61041261ea6081565b610412610546366004614104565b60676020526000908152604090205481565b60655461037290610100900473ffffffffffffffffffffffffffffffffffffffff1681565b61034861058b366004614136565b6121ee565b61034861059e36600461432b565b612838565b6069546103729068010000000000000000900473ffffffffffffffffffffffffffffffffffffffff1681565b606a546103729073ffffffffffffffffffffffffffffffffffffffff1681565b6103486105fd366004614360565b61290d565b6069546102f8907c0100000000000000000000000000000000000000000000000000000000900460ff1681565b610348612fb2565b60685461031c907801000000000000000000000000000000000000000000000000900467ffffffffffffffff1681565b606c546103729073ffffffffffffffffffffffffffffffffffffffff1681565b610348610695366004614453565b613141565b6103486106a8366004613e78565b613641565b61041267016345785d8a000081565b606f80546106c990614498565b80601f01602080910402602001604051908101604052809291908181526020018280546106f590614498565b80156107425780601f1061071757610100808354040283529160200191610742565b820191906000526020600020905b81548152906001019060200180831161072557829003601f168201915b505050505081565b60705473ffffffffffffffffffffffffffffffffffffffff1633146107dc5760405162461bcd60e51b815260206004820152603d60248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7953656375726974794360448201527f6f756e63696c3a206f6e6c7920736563757269747920636f756e63696c00000060648201526084015b60405180910390fd5b607080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f373a9d1d60f01a33ff86d540991f09f5c5d7482656794de80be077c5eb9693d9906020015b60405180910390a150565b60655460ff16156108f55760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a4016107d3565b6108fd6136de565b610905613745565b565b60655460ff16156109a65760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a4016107d3565b60695468010000000000000000900473ffffffffffffffffffffffffffffffffffffffff163314610a3f5760405162461bcd60e51b815260206004820152603f60248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7954727573746564536560448201527f7175656e6365723a206f6e6c7920747275737465642073657175656e6365720060648201526084016107d3565b805180610ada5760405162461bcd60e51b815260206004820152604260248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365426174636860448201527f65733a204174206c65617374206d7573742073657175656e636520312062617460648201527f6368000000000000000000000000000000000000000000000000000000000000608482015260a4016107d3565b60685467ffffffffffffffff680100000000000000008204811660008181526067602052604081205483851694929370010000000000000000000000000000000090930490921691905b85811015611088576000878281518110610b4057610b406144eb565b602002602001015190506000816060015167ffffffffffffffff161115610d595783610b6b81614549565b945050600081600001518051906020012082602001518360600151604051602001610bce93929190928352602083019190915260c01b7fffffffffffffffff00000000000000000000000000000000000000000000000016604082015260480190565b60408051601f19818403018152918152815160209283012067ffffffffffffffff8816600090815260669093529120549091508114610c9b5760405162461bcd60e51b815260206004820152604260248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365426174636860448201527f65733a20466f7263656420626174636865732064617461206d757374206d617460648201527f6368000000000000000000000000000000000000000000000000000000000000608482015260a4016107d3565b816060015167ffffffffffffffff16826040015167ffffffffffffffff161015610d535760405162461bcd60e51b815260206004820152605d60248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365426174636860448201527f65733a20466f7263656420626174636865732074696d657374616d70206d757360648201527f7420626520626967676572206f7220657175616c207468616e206d696e000000608482015260a4016107d3565b50610ef3565b60208101511580610e085750606a5460208201516040517f257b363200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9092169163257b363291610dc29160040190815260200190565b6020604051808303816000875af1158015610de1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e059190614570565b15155b610e7a5760405162461bcd60e51b815260206004820152603f60248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365426174636860448201527f65733a20476c6f62616c206578697420726f6f74206d7573742065786973740060648201526084016107d3565b80515161ea6011610ef35760405162461bcd60e51b815260206004820152603f60248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365426174636860448201527f65733a205472616e73616374696f6e73206279746573206f766572666c6f770060648201526084016107d3565b8567ffffffffffffffff16816040015167ffffffffffffffff1610158015610f29575042816040015167ffffffffffffffff1611155b610fc15760405162461bcd60e51b815260206004820152604260248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365426174636860448201527f65733a2054696d657374616d70206d75737420626520696e736964652072616e60648201527f6765000000000000000000000000000000000000000000000000000000000000608482015260a4016107d3565b805180516020918201208183015160408085015181519485018890529084019290925260608084019190915260c09190911b7fffffffffffffffff00000000000000000000000000000000000000000000000016608083015233901b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166088820152609c01604051602081830303815290604052805190602001209250848061106a90614549565b9550508060400151955050808061108090614589565b915050610b24565b5060685467ffffffffffffffff78010000000000000000000000000000000000000000000000009091048116908316111561112b5760405162461bcd60e51b815260206004820152603a60248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365426174636860448201527f65733a20466f7263652062617463686573206f766572666c6f7700000000000060648201526084016107d3565b60685460009061115990700100000000000000000000000000000000900467ffffffffffffffff16846145c1565b61116d9067ffffffffffffffff16876145ea565b6068805467ffffffffffffffff868116700100000000000000000000000000000000027fffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff8983166801000000000000000081027fffffffffffffffffffffffffffffffff00000000000000000000000000000000909516938c16939093179390931792909216919091179091556000908152606760205260409020839055905061124a33306112248467016345785d8a0000614601565b606554610100900473ffffffffffffffffffffffffffffffffffffffff169291906137cf565b6068546040516801000000000000000090910467ffffffffffffffff16907f303446e6a8cb73c83dff421c0b1d5e5ce0719dab1bff13660fc254e58cc17fce90600090a250505050505050565b606d80546106c990614498565b60655460ff16156113435760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a4016107d3565b60695467ffffffffffffffff90811690881611156113ef5760405162461bcd60e51b815260206004820152605b60248201527f50726f6f664f66456666696369656e63793a3a7665726966794261746368657360448201527f3a20696e69744e756d4261746368206d757374206265206c657373206f72206560648201527f7175616c207468616e206c617374566572696669656442617463680000000000608482015260a4016107d3565b60695467ffffffffffffffff9081169087161161149a5760405162461bcd60e51b815260206004820152605560248201527f50726f6f664f66456666696369656e63793a3a7665726966794261746368657360448201527f3a2066696e616c4e65774261746368206d75737420626520626967676572207460648201527f68616e206c617374566572696669656442617463680000000000000000000000608482015260a4016107d3565b67ffffffffffffffff87166000908152606b602052604090205461154c5760405162461bcd60e51b815260206004820152604860248201527f50726f6f664f66456666696369656e63793a3a7665726966794261746368657360448201527f3a20696e69744e756d426174636820737461746520726f6f7420646f6573206e60648201527f6f74206578697374000000000000000000000000000000000000000000000000608482015260a4016107d3565b600061155a88888888611999565b905060007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000160028360405161158f919061463e565b602060405180830381855afa1580156115ac573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906115cf9190614570565b6115d99190614689565b606c546040805160208101825283815290517f43753b4d00000000000000000000000000000000000000000000000000000000815292935073ffffffffffffffffffffffffffffffffffffffff909116916343753b4d91611643918991899189919060040161469d565b602060405180830381865afa158015611660573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116849190614717565b6116f65760405162461bcd60e51b815260206004820152602f60248201527f50726f6f664f66456666696369656e63793a3a7665726966794261746368657360448201527f3a20494e56414c49445f50524f4f46000000000000000000000000000000000060648201526084016107d3565b6069546117549033906117139067ffffffffffffffff168b6145c1565b67ffffffffffffffff166117256120bd565b61172f9190614601565b606554610100900473ffffffffffffffffffffffffffffffffffffffff16919061388d565b606980547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff8a169081179091556000908152606b602052604090819020879055606a5490517f33d6247d0000000000000000000000000000000000000000000000000000000081526004810189905273ffffffffffffffffffffffffffffffffffffffff909116906333d6247d90602401600060405180830381600087803b15801561180957600080fd5b505af115801561181d573d6000803e3d6000fd5b505060405188815233925067ffffffffffffffff8b1691507f9c72852172521097ba7e1482e6b44b351323df0155f97f4ea18fcec28e1f59669060200160405180910390a3505050505050505050565b60695468010000000000000000900473ffffffffffffffffffffffffffffffffffffffff1633146119065760405162461bcd60e51b815260206004820152603f60248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7954727573746564536560448201527f7175656e6365723a206f6e6c7920747275737465642073657175656e6365720060648201526084016107d3565b606980547fffffffff0000000000000000000000000000000000000000ffffffffffffffff166801000000000000000073ffffffffffffffffffffffffffffffffffffffff8416908102919091179091556040519081527ff54144f9611984021529f814a1cb6a41e22c58351510a0d9f7e822618abb9cc09060200161084b565b61198f6136de565b61090560006138e8565b67ffffffffffffffff8085166000818152606760205260408082205493871682529020546060929115806119cc57508115155b611a645760405162461bcd60e51b815260206004820152604560248201527f50726f6f664f66456666696369656e63793a3a676574496e707574536e61726b60448201527f42797465733a206f6c64416363496e7075744861736820646f6573206e6f742060648201527f6578697374000000000000000000000000000000000000000000000000000000608482015260a4016107d3565b80611afd5760405162461bcd60e51b815260206004820152604560248201527f50726f6f664f66456666696369656e63793a3a676574496e707574536e61726b60448201527f42797465733a206e6577416363496e7075744861736820646f6573206e6f742060648201527f6578697374000000000000000000000000000000000000000000000000000000608482015260a4016107d3565b67ffffffffffffffff87166000908152606b602090815260409182902054606e5492517fffffffffffffffffffffffffffffffffffffffff0000000000000000000000003360601b16928101929092526034820152605481018490527fffffffffffffffff00000000000000000000000000000000000000000000000060c08a811b8216607484015292831b8116607c8301526084820187905260a4820184905260c482018890529188901b90911660e482015260ec01604051602081830303815290604052925050505b949350505050565b60685460009067ffffffffffffffff7001000000000000000000000000000000008204811691611c1f917801000000000000000000000000000000000000000000000000909104166001614734565b611c2991906145c1565b611c459067ffffffffffffffff16670de0b6b3a7640000614601565b905090565b600054610100900460ff1615808015611c6a5750600054600160ff909116105b80611c845750303b158015611c84575060005460ff166001145b611cf65760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016107d3565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790558015611d5457600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b606a80547fffffffffffffffffffffffff000000000000000000000000000000000000000090811673ffffffffffffffffffffffffffffffffffffffff8f811691909117909255606580547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101008f851602179055606c80549091168c831617905560008052606b6020527fc8cc8bda7ad4886bea3ebbdafa02e79d37c39bf4011696b26a31a0802fd9458b8a9055606980547fffffff000000000000000000000000000000000000000000ffffffffffffffff1668010000000000000000928b16929092027fffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff16919091177c010000000000000000000000000000000000000000000000000000000089151502179055606d611e9387826147ae565b50606e80547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff8716179055606f611ed485826147ae565b506071805473ffffffffffffffffffffffffffffffffffffffff8086167fffffffffffffffffffffffff0000000000000000000000000000000000000000928316179092556070805492851692909116919091179055611f3261395f565b8015611f9557600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050505050565b60695468010000000000000000900473ffffffffffffffffffffffffffffffffffffffff16331461203c5760405162461bcd60e51b815260206004820152603f60248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7954727573746564536560448201527f7175656e6365723a206f6e6c7920747275737465642073657175656e6365720060648201526084016107d3565b606980548215157c0100000000000000000000000000000000000000000000000000000000027fffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff9091161790556040517fbacda50a4a8575be1d91a7ebe29ee45056f3a94f12a2281eb6b43afa33bcefe69061084b90831515815260200190565b6065546040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152600091829161010090910473ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa158015612134573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121589190614570565b60695460685491925060009167ffffffffffffffff918216916801000000000000000082048116916121bd91700100000000000000000000000000000000820481169178010000000000000000000000000000000000000000000000009004166145c1565b6121c79190614734565b6121d191906145c1565b67ffffffffffffffff1690506121e781836148aa565b9250505090565b60655460ff161561228d5760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a4016107d3565b8567ffffffffffffffff168767ffffffffffffffff161061233c5760405162461bcd60e51b815260206004820152605d60248201527f50726f6f664f66456666696369656e63793a3a70726f76654e6f6e446574657260448201527f6d696e697374696353746174653a2066696e616c4e65774261746368206d757360648201527f7420626520626967676572207468616e20696e69744e756d4261746368000000608482015260a4016107d3565b60695467ffffffffffffffff908116908716111561240e5760405162461bcd60e51b815260206004820152606960248201527f50726f6f664f66456666696369656e63793a3a70726f76654e6f6e446574657260448201527f6d696e697374696353746174653a2066696e616c4e65774261746368206d757360648201527f74206265206c657373206f7220657175616c207468616e206c6173745665726960848201527f666965644261746368000000000000000000000000000000000000000000000060a482015260c4016107d3565b67ffffffffffffffff87166000908152606b60205260409020546124c05760405162461bcd60e51b815260206004820152605560248201527f50726f6f664f66456666696369656e63793a3a70726f76654e6f6e446574657260448201527f6d696e697374696353746174653a20696e69744e756d4261746368207374617460648201527f6520726f6f7420646f6573206e6f742065786973740000000000000000000000608482015260a4016107d3565b67ffffffffffffffff86166000908152606b60205260409020546125725760405162461bcd60e51b815260206004820152605660248201527f50726f6f664f66456666696369656e63793a3a70726f76654e6f6e446574657260448201527f6d696e697374696353746174653a2066696e616c4e657742617463682073746160648201527f746520726f6f7420646f6573206e6f7420657869737400000000000000000000608482015260a4016107d3565b600061258088888888611999565b905060007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000016002836040516125b5919061463e565b602060405180830381855afa1580156125d2573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906125f59190614570565b6125ff9190614689565b606c546040805160208101825283815290517f43753b4d00000000000000000000000000000000000000000000000000000000815292935073ffffffffffffffffffffffffffffffffffffffff909116916343753b4d91612669918991899189919060040161469d565b602060405180830381865afa158015612686573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126aa9190614717565b61271c5760405162461bcd60e51b815260206004820152603c60248201527f50726f6f664f66456666696369656e63793a3a70726f76654e6f6e446574657260448201527f6d696e697374696353746174653a20494e56414c49445f50524f4f460000000060648201526084016107d3565b67ffffffffffffffff88166000908152606b60205260409020548690036127d15760405162461bcd60e51b815260206004820152606060248201527f50726f6f664f66456666696369656e63793a3a70726f76654e6f6e446574657260448201527f6d696e697374696353746174653a2073746f72656420726f6f74206d7573742060648201527f626520646966666572656e74207468616e206e657720737461746520726f6f74608482015260a4016107d3565b67ffffffffffffffff88166000908152606b60209081526040918290205482519081529081018890527f10b370e2afd2be06fe3170fec9cb3bbd87233f3deb63d488c0dde59813afdabe910160405180910390a161282d613745565b505050505050505050565b60695468010000000000000000900473ffffffffffffffffffffffffffffffffffffffff1633146128d15760405162461bcd60e51b815260206004820152603f60248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7954727573746564536560448201527f7175656e6365723a206f6e6c7920747275737465642073657175656e6365720060648201526084016107d3565b606d6128dd82826147ae565b507f6b8f723a4c7a5335cafae8a598a0aa0301be1387c037dccc085b62add6448b208160405161084b9190613e2c565b60655460ff16156129ac5760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a4016107d3565b6069547c0100000000000000000000000000000000000000000000000000000000900460ff161515600114612a6f5760405162461bcd60e51b815260206004820152604860248201527f50726f6f664f66456666696369656e63793a3a6973466f72636542617463684160448201527f6c6c6f7765643a206f6e6c7920696620666f726365206261746368206973206160648201527f7661696c61626c65000000000000000000000000000000000000000000000000608482015260a4016107d3565b805180612b0a5760405162461bcd60e51b815260206004820152604260248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365466f72636560448201527f42617463683a204d75737420666f726365206174206c6561737420312062617460648201527f6368000000000000000000000000000000000000000000000000000000000000608482015260a4016107d3565b60685467ffffffffffffffff78010000000000000000000000000000000000000000000000008204811691612b559184917001000000000000000000000000000000009004166148be565b1115612bc95760405162461bcd60e51b815260206004820152603a60248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365466f72636560448201527f42617463683a20466f72636520626174636820696e76616c696400000000000060648201526084016107d3565b60685467ffffffffffffffff680100000000000000008204811660008181526067602052604081205491937001000000000000000000000000000000009004909216915b84811015612ee2576000868281518110612c2957612c296144eb565b602002602001015190508380612c3e90614549565b825180516020918201208185015160408087015181519485019390935283015260c01b7fffffffffffffffff0000000000000000000000000000000000000000000000001660608201529095506000915060680160408051601f19818403018152918152815160209283012067ffffffffffffffff8816600090815260669093529120549091508114612d5f5760405162461bcd60e51b815260206004820152604760248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365466f72636560448201527f426174636865733a20466f7263656420626174636865732064617461206d757360648201527f74206d6174636800000000000000000000000000000000000000000000000000608482015260a4016107d3565b612d6a6001886145ea565b8303612e28574262093a808360400151612d849190614734565b67ffffffffffffffff161115612e285760405162461bcd60e51b815260206004820152604c60248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365466f72636560448201527f42617463683a20466f72636564206261746368206973206e6f7420696e20746960648201527f6d656f757420706572696f640000000000000000000000000000000000000000608482015260a4016107d3565b8151805160209182012081840151604080519384018890528301919091526060808301919091524260c01b7fffffffffffffffff00000000000000000000000000000000000000000000000016608083015233901b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166088820152609c016040516020818303038152906040528051906020012093508580612eca90614549565b96505050508080612eda90614589565b915050612c0d565b50606880544267ffffffffffffffff9081167fffffffffffffffffffffffffffffffff000000000000000000000000000000009092169190911768010000000000000000868316818102929092177fffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff1670010000000000000000000000000000000087851602178455600091825260676020526040808320869055935493519304909116917f648a61dd2438f072f5a1960939abd30f37aea80d2e94c9792ad142d3e0a490a49190a25050505050565b60655460ff1661302a5760405162461bcd60e51b815260206004820152603b60248201527f456d657267656e63794d616e616765723a3a6966456d657267656e637953746160448201527f74653a206f6e6c7920696620656d657267656e6379207374617465000000000060648201526084016107d3565b60705473ffffffffffffffffffffffffffffffffffffffff1633146130b75760405162461bcd60e51b815260206004820152603d60248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7953656375726974794360448201527f6f756e63696c3a206f6e6c7920736563757269747920636f756e63696c00000060648201526084016107d3565b607160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dbc169766040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561312157600080fd5b505af1158015613135573d6000803e3d6000fd5b505050506109056139e5565b60655460ff16156131e05760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a4016107d3565b6069547c0100000000000000000000000000000000000000000000000000000000900460ff1615156001146132a35760405162461bcd60e51b815260206004820152604860248201527f50726f6f664f66456666696369656e63793a3a6973466f72636542617463684160448201527f6c6c6f7765643a206f6e6c7920696620666f726365206261746368206973206160648201527f7661696c61626c65000000000000000000000000000000000000000000000000608482015260a4016107d3565b60006132ad611bd0565b9050818111156133255760405162461bcd60e51b815260206004820152602f60248201527f50726f6f664f66456666696369656e63793a3a666f72636542617463683a206e60448201527f6f7420656e6f756768206d61746963000000000000000000000000000000000060648201526084016107d3565b61ea6083511061339d5760405162461bcd60e51b815260206004820152603a60248201527f50726f6f664f66456666696369656e63793a3a666f72636542617463683a205460448201527f72616e73616374696f6e73206279746573206f766572666c6f7700000000000060648201526084016107d3565b6065546133c790610100900473ffffffffffffffffffffffffffffffffffffffff163330846137cf565b606a54604080517f3ed691ef000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff1691633ed691ef9160048083019260209291908290030181865afa158015613437573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061345b9190614570565b60688054919250780100000000000000000000000000000000000000000000000090910467ffffffffffffffff1690601861349583614549565b91906101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550508380519060200120814260405160200161350e93929190928352602083019190915260c01b7fffffffffffffffff00000000000000000000000000000000000000000000000016604082015260480190565b60408051808303601f1901815291815281516020928301206068547801000000000000000000000000000000000000000000000000900467ffffffffffffffff16600090815260669093529120553233036135de57606854604080518381523360208201526060918101829052600091810191909152780100000000000000000000000000000000000000000000000090910467ffffffffffffffff16907ff94bb37db835f1ab585ee00041849a09b12cd081d77fa15ca070757619cbc9319060800160405180910390a261363b565b606860189054906101000a900467ffffffffffffffff1667ffffffffffffffff167ff94bb37db835f1ab585ee00041849a09b12cd081d77fa15ca070757619cbc931823387604051613632939291906148d6565b60405180910390a25b50505050565b6136496136de565b73ffffffffffffffffffffffffffffffffffffffff81166136d25760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016107d3565b6136db816138e8565b50565b60335473ffffffffffffffffffffffffffffffffffffffff1633146109055760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016107d3565b607160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632072f6c56040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156137af57600080fd5b505af11580156137c3573d6000803e3d6000fd5b50505050610905613ab0565b60405173ffffffffffffffffffffffffffffffffffffffff8085166024830152831660448201526064810182905261363b9085907f23b872dd00000000000000000000000000000000000000000000000000000000906084015b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152613ba5565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526138e39084907fa9059cbb0000000000000000000000000000000000000000000000000000000090606401613829565b505050565b6033805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff166139dc5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016107d3565b610905336138e8565b60655460ff16613a5d5760405162461bcd60e51b815260206004820152603b60248201527f456d657267656e63794d616e616765723a3a6966456d657267656e637953746160448201527f74653a206f6e6c7920696620656d657267656e6379207374617465000000000060648201526084016107d3565b606580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690556040517f1e5e34eea33501aecf2ebec9fe0e884a40804275ea7fe10b2ba084c8374308b390600090a1565b60655460ff1615613b4f5760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a4016107d3565b606580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556040517f2261efe5aef6fedc1fd1550b25facc9181745623049c7901287030b9ad1a549790600090a1565b6000613c07826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16613c979092919063ffffffff16565b8051909150156138e35780806020019051810190613c259190614717565b6138e35760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016107d3565b6060611bc88484600085856000808673ffffffffffffffffffffffffffffffffffffffff168587604051613ccb919061463e565b60006040518083038185875af1925050503d8060008114613d08576040519150601f19603f3d011682016040523d82523d6000602084013e613d0d565b606091505b5091509150613d1e87838387613d29565b979650505050505050565b60608315613da5578251600003613d9e5773ffffffffffffffffffffffffffffffffffffffff85163b613d9e5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016107d3565b5081611bc8565b611bc88383815115613dba5781518083602001fd5b8060405162461bcd60e51b81526004016107d39190613e2c565b60005b83811015613def578181015183820152602001613dd7565b8381111561363b5750506000910152565b60008151808452613e18816020860160208601613dd4565b601f01601f19169290920160200192915050565b602081526000613e3f6020830184613e00565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146136db57600080fd5b8035613e7381613e46565b919050565b600060208284031215613e8a57600080fd5b8135613e3f81613e46565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516080810167ffffffffffffffff81118282101715613ee757613ee7613e95565b60405290565b6040516060810167ffffffffffffffff81118282101715613ee757613ee7613e95565b604051601f8201601f1916810167ffffffffffffffff81118282101715613f3957613f39613e95565b604052919050565b600067ffffffffffffffff821115613f5b57613f5b613e95565b5060051b60200190565b600082601f830112613f7657600080fd5b813567ffffffffffffffff811115613f9057613f90613e95565b613fa36020601f19601f84011601613f10565b818152846020838601011115613fb857600080fd5b816020850160208301376000918101602001919091529392505050565b803567ffffffffffffffff81168114613e7357600080fd5b6000602080838503121561400057600080fd5b823567ffffffffffffffff8082111561401857600080fd5b818501915085601f83011261402c57600080fd5b813561403f61403a82613f41565b613f10565b81815260059190911b8301840190848101908883111561405e57600080fd5b8585015b838110156140f75780358581111561407a5760008081fd5b86016080818c03601f19018113156140925760008081fd5b61409a613ec4565b89830135888111156140ac5760008081fd5b6140ba8e8c83870101613f65565b8252506040808401358b83015260606140d4818601613fd5565b828401526140e3848601613fd5565b908301525085525050918601918601614062565b5098975050505050505050565b60006020828403121561411657600080fd5b613e3f82613fd5565b806040810183101561413057600080fd5b92915050565b6000806000806000806000610180888a03121561415257600080fd5b61415b88613fd5565b965061416960208901613fd5565b955060408801359450606088013593506141868960808a0161411f565b925061014088018981111561419a57600080fd5b60c0890192506141aa8a8261411f565b91505092959891949750929550565b600080600080608085870312156141cf57600080fd5b6141d885613fd5565b93506141e660208601613fd5565b93969395505050506040820135916060013590565b80151581146136db57600080fd5b8035613e73816141fb565b60008060008060008060008060008060006101608c8e03121561423657600080fd5b61423f8c613e68565b9a5061424d60208d01613e68565b995061425b60408d01613e68565b985060608c0135975061427060808d01613e68565b965061427e60a08d01614209565b955067ffffffffffffffff8060c08e0135111561429a57600080fd5b6142aa8e60c08f01358f01613f65565b95506142b860e08e01613fd5565b9450806101008e013511156142cc57600080fd5b506142de8d6101008e01358e01613f65565b92506142ed6101208d01613e68565b91506142fc6101408d01613e68565b90509295989b509295989b9093969950565b60006020828403121561432057600080fd5b8135613e3f816141fb565b60006020828403121561433d57600080fd5b813567ffffffffffffffff81111561435457600080fd5b611bc884828501613f65565b6000602080838503121561437357600080fd5b823567ffffffffffffffff8082111561438b57600080fd5b818501915085601f83011261439f57600080fd5b81356143ad61403a82613f41565b81815260059190911b830184019084810190888311156143cc57600080fd5b8585015b838110156140f7578035858111156143e85760008081fd5b86016060818c03601f19018113156144005760008081fd5b614408613eed565b898301358881111561441a5760008081fd5b6144288e8c83870101613f65565b8252506040808401358b830152614440838501613fd5565b90820152855250509186019186016143d0565b6000806040838503121561446657600080fd5b823567ffffffffffffffff81111561447d57600080fd5b61448985828601613f65565b95602094909401359450505050565b600181811c908216806144ac57607f821691505b6020821081036144e5577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600067ffffffffffffffff8083168181036145665761456661451a565b6001019392505050565b60006020828403121561458257600080fd5b5051919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036145ba576145ba61451a565b5060010190565b600067ffffffffffffffff838116908316818110156145e2576145e261451a565b039392505050565b6000828210156145fc576145fc61451a565b500390565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156146395761463961451a565b500290565b60008251614650818460208701613dd4565b9190910192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000826146985761469861465a565b500690565b61012081016040808784376000838201818152879190815b60028110156146d5578484833790840182815292840192906001016146b5565b5050828760c0870137610100850181815286935091505b600181101561470b5782518252602092830192909101906001016146ec565b50505095945050505050565b60006020828403121561472957600080fd5b8151613e3f816141fb565b600067ffffffffffffffff8083168185168083038211156147575761475761451a565b01949350505050565b601f8211156138e357600081815260208120601f850160051c810160208610156147875750805b601f850160051c820191505b818110156147a657828155600101614793565b505050505050565b815167ffffffffffffffff8111156147c8576147c8613e95565b6147dc816147d68454614498565b84614760565b602080601f83116001811461482f57600084156147f95750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b1785556147a6565b600085815260208120601f198616915b8281101561485e5788860151825594840194600190910190840161483f565b508582101561489a57878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b6000826148b9576148b961465a565b500490565b600082198211156148d1576148d161451a565b500190565b83815273ffffffffffffffffffffffffffffffffffffffff8316602082015260606040820152600061490b6060830184613e00565b9594505050505056fea26469706673582212207c6b25ea7b3ac634e02bf0cce36a2d1a9ef1d74d076f5577d417755d876e61f664736f6c634300080f0033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106102c85760003560e01c80638da5cb5b1161017b578063cfa8ed47116100d8578063e7a7ed021161008c578063eaeb077b11610071578063eaeb077b14610687578063f2fde38b1461069a578063f7552761146106ad57600080fd5b8063e7a7ed0214610637578063e8bf92ed1461066757600080fd5b8063d8d1091b116100bd578063d8d1091b146105ef578063d8f54db014610602578063dbc169761461062f57600080fd5b8063cfa8ed47146105a3578063d02103ca146105cf57600080fd5b8063b02286c01161012f578063b6b0b09711610114578063b6b0b09714610558578063c3fd0f9c1461057d578063c89e42df1461059057600080fd5b8063b02286c01461052f578063b4d63f581461053857600080fd5b8063a3c573eb11610160578063a3c573eb146104f1578063ab9fc5ef14610511578063adc879e91461051b57600080fd5b80638da5cb5b146104cb57806399f5634e146104e957600080fd5b8063542028d5116102295780637152facf116101dd5780637fcb3653116101c25780637fcb36531461049157806381df7d3f146104a55780638c4a0af7146104b857600080fd5b80637152facf14610476578063798470571461048957600080fd5b80636b8616ce1161020e5780636b8616ce1461043b5780636ff512cc1461045b578063715018a61461046e57600080fd5b8063542028d51461042057806355b925e61461042857600080fd5b806327eb6c0f11610280578063423fa85611610265578063423fa856146103aa57806345605267146103ca5780635392c5e0146103f257600080fd5b806327eb6c0f146103525780633c1582671461039757600080fd5b806319d8ac61116102b157806319d8ac61146103085780631c1083e2146103355780632072f6c51461034a57600080fd5b8063107bf28c146102cd57806315064c96146102eb575b600080fd5b6102d56106bc565b6040516102e29190613e2c565b60405180910390f35b6065546102f89060ff1681565b60405190151581526020016102e2565b60685461031c9067ffffffffffffffff1681565b60405167ffffffffffffffff90911681526020016102e2565b610348610343366004613e78565b61074a565b005b610348610856565b6070546103729073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016102e2565b6103486103a5366004613fed565b610907565b60685461031c9068010000000000000000900467ffffffffffffffff1681565b60685461031c90700100000000000000000000000000000000900467ffffffffffffffff1681565b610412610400366004614104565b606b6020526000908152604090205481565b6040519081526020016102e2565b6102d5611297565b610348610436366004614136565b6112a4565b610412610449366004614104565b60666020526000908152604090205481565b610348610469366004613e78565b61186d565b610348611987565b6102d56104843660046141b9565b611999565b610412611bd0565b60695461031c9067ffffffffffffffff1681565b6103486104b3366004614214565b611c4a565b6103486104c636600461430e565b611fa3565b60335473ffffffffffffffffffffffffffffffffffffffff16610372565b6104126120bd565b6071546103729073ffffffffffffffffffffffffffffffffffffffff1681565b61031c62093a8081565b606e5461031c9067ffffffffffffffff1681565b61041261ea6081565b610412610546366004614104565b60676020526000908152604090205481565b60655461037290610100900473ffffffffffffffffffffffffffffffffffffffff1681565b61034861058b366004614136565b6121ee565b61034861059e36600461432b565b612838565b6069546103729068010000000000000000900473ffffffffffffffffffffffffffffffffffffffff1681565b606a546103729073ffffffffffffffffffffffffffffffffffffffff1681565b6103486105fd366004614360565b61290d565b6069546102f8907c0100000000000000000000000000000000000000000000000000000000900460ff1681565b610348612fb2565b60685461031c907801000000000000000000000000000000000000000000000000900467ffffffffffffffff1681565b606c546103729073ffffffffffffffffffffffffffffffffffffffff1681565b610348610695366004614453565b613141565b6103486106a8366004613e78565b613641565b61041267016345785d8a000081565b606f80546106c990614498565b80601f01602080910402602001604051908101604052809291908181526020018280546106f590614498565b80156107425780601f1061071757610100808354040283529160200191610742565b820191906000526020600020905b81548152906001019060200180831161072557829003601f168201915b505050505081565b60705473ffffffffffffffffffffffffffffffffffffffff1633146107dc5760405162461bcd60e51b815260206004820152603d60248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7953656375726974794360448201527f6f756e63696c3a206f6e6c7920736563757269747920636f756e63696c00000060648201526084015b60405180910390fd5b607080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f373a9d1d60f01a33ff86d540991f09f5c5d7482656794de80be077c5eb9693d9906020015b60405180910390a150565b60655460ff16156108f55760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a4016107d3565b6108fd6136de565b610905613745565b565b60655460ff16156109a65760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a4016107d3565b60695468010000000000000000900473ffffffffffffffffffffffffffffffffffffffff163314610a3f5760405162461bcd60e51b815260206004820152603f60248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7954727573746564536560448201527f7175656e6365723a206f6e6c7920747275737465642073657175656e6365720060648201526084016107d3565b805180610ada5760405162461bcd60e51b815260206004820152604260248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365426174636860448201527f65733a204174206c65617374206d7573742073657175656e636520312062617460648201527f6368000000000000000000000000000000000000000000000000000000000000608482015260a4016107d3565b60685467ffffffffffffffff680100000000000000008204811660008181526067602052604081205483851694929370010000000000000000000000000000000090930490921691905b85811015611088576000878281518110610b4057610b406144eb565b602002602001015190506000816060015167ffffffffffffffff161115610d595783610b6b81614549565b945050600081600001518051906020012082602001518360600151604051602001610bce93929190928352602083019190915260c01b7fffffffffffffffff00000000000000000000000000000000000000000000000016604082015260480190565b60408051601f19818403018152918152815160209283012067ffffffffffffffff8816600090815260669093529120549091508114610c9b5760405162461bcd60e51b815260206004820152604260248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365426174636860448201527f65733a20466f7263656420626174636865732064617461206d757374206d617460648201527f6368000000000000000000000000000000000000000000000000000000000000608482015260a4016107d3565b816060015167ffffffffffffffff16826040015167ffffffffffffffff161015610d535760405162461bcd60e51b815260206004820152605d60248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365426174636860448201527f65733a20466f7263656420626174636865732074696d657374616d70206d757360648201527f7420626520626967676572206f7220657175616c207468616e206d696e000000608482015260a4016107d3565b50610ef3565b60208101511580610e085750606a5460208201516040517f257b363200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9092169163257b363291610dc29160040190815260200190565b6020604051808303816000875af1158015610de1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e059190614570565b15155b610e7a5760405162461bcd60e51b815260206004820152603f60248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365426174636860448201527f65733a20476c6f62616c206578697420726f6f74206d7573742065786973740060648201526084016107d3565b80515161ea6011610ef35760405162461bcd60e51b815260206004820152603f60248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365426174636860448201527f65733a205472616e73616374696f6e73206279746573206f766572666c6f770060648201526084016107d3565b8567ffffffffffffffff16816040015167ffffffffffffffff1610158015610f29575042816040015167ffffffffffffffff1611155b610fc15760405162461bcd60e51b815260206004820152604260248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365426174636860448201527f65733a2054696d657374616d70206d75737420626520696e736964652072616e60648201527f6765000000000000000000000000000000000000000000000000000000000000608482015260a4016107d3565b805180516020918201208183015160408085015181519485018890529084019290925260608084019190915260c09190911b7fffffffffffffffff00000000000000000000000000000000000000000000000016608083015233901b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166088820152609c01604051602081830303815290604052805190602001209250848061106a90614549565b9550508060400151955050808061108090614589565b915050610b24565b5060685467ffffffffffffffff78010000000000000000000000000000000000000000000000009091048116908316111561112b5760405162461bcd60e51b815260206004820152603a60248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365426174636860448201527f65733a20466f7263652062617463686573206f766572666c6f7700000000000060648201526084016107d3565b60685460009061115990700100000000000000000000000000000000900467ffffffffffffffff16846145c1565b61116d9067ffffffffffffffff16876145ea565b6068805467ffffffffffffffff868116700100000000000000000000000000000000027fffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff8983166801000000000000000081027fffffffffffffffffffffffffffffffff00000000000000000000000000000000909516938c16939093179390931792909216919091179091556000908152606760205260409020839055905061124a33306112248467016345785d8a0000614601565b606554610100900473ffffffffffffffffffffffffffffffffffffffff169291906137cf565b6068546040516801000000000000000090910467ffffffffffffffff16907f303446e6a8cb73c83dff421c0b1d5e5ce0719dab1bff13660fc254e58cc17fce90600090a250505050505050565b606d80546106c990614498565b60655460ff16156113435760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a4016107d3565b60695467ffffffffffffffff90811690881611156113ef5760405162461bcd60e51b815260206004820152605b60248201527f50726f6f664f66456666696369656e63793a3a7665726966794261746368657360448201527f3a20696e69744e756d4261746368206d757374206265206c657373206f72206560648201527f7175616c207468616e206c617374566572696669656442617463680000000000608482015260a4016107d3565b60695467ffffffffffffffff9081169087161161149a5760405162461bcd60e51b815260206004820152605560248201527f50726f6f664f66456666696369656e63793a3a7665726966794261746368657360448201527f3a2066696e616c4e65774261746368206d75737420626520626967676572207460648201527f68616e206c617374566572696669656442617463680000000000000000000000608482015260a4016107d3565b67ffffffffffffffff87166000908152606b602052604090205461154c5760405162461bcd60e51b815260206004820152604860248201527f50726f6f664f66456666696369656e63793a3a7665726966794261746368657360448201527f3a20696e69744e756d426174636820737461746520726f6f7420646f6573206e60648201527f6f74206578697374000000000000000000000000000000000000000000000000608482015260a4016107d3565b600061155a88888888611999565b905060007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000160028360405161158f919061463e565b602060405180830381855afa1580156115ac573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906115cf9190614570565b6115d99190614689565b606c546040805160208101825283815290517f43753b4d00000000000000000000000000000000000000000000000000000000815292935073ffffffffffffffffffffffffffffffffffffffff909116916343753b4d91611643918991899189919060040161469d565b602060405180830381865afa158015611660573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116849190614717565b6116f65760405162461bcd60e51b815260206004820152602f60248201527f50726f6f664f66456666696369656e63793a3a7665726966794261746368657360448201527f3a20494e56414c49445f50524f4f46000000000000000000000000000000000060648201526084016107d3565b6069546117549033906117139067ffffffffffffffff168b6145c1565b67ffffffffffffffff166117256120bd565b61172f9190614601565b606554610100900473ffffffffffffffffffffffffffffffffffffffff16919061388d565b606980547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff8a169081179091556000908152606b602052604090819020879055606a5490517f33d6247d0000000000000000000000000000000000000000000000000000000081526004810189905273ffffffffffffffffffffffffffffffffffffffff909116906333d6247d90602401600060405180830381600087803b15801561180957600080fd5b505af115801561181d573d6000803e3d6000fd5b505060405188815233925067ffffffffffffffff8b1691507f9c72852172521097ba7e1482e6b44b351323df0155f97f4ea18fcec28e1f59669060200160405180910390a3505050505050505050565b60695468010000000000000000900473ffffffffffffffffffffffffffffffffffffffff1633146119065760405162461bcd60e51b815260206004820152603f60248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7954727573746564536560448201527f7175656e6365723a206f6e6c7920747275737465642073657175656e6365720060648201526084016107d3565b606980547fffffffff0000000000000000000000000000000000000000ffffffffffffffff166801000000000000000073ffffffffffffffffffffffffffffffffffffffff8416908102919091179091556040519081527ff54144f9611984021529f814a1cb6a41e22c58351510a0d9f7e822618abb9cc09060200161084b565b61198f6136de565b61090560006138e8565b67ffffffffffffffff8085166000818152606760205260408082205493871682529020546060929115806119cc57508115155b611a645760405162461bcd60e51b815260206004820152604560248201527f50726f6f664f66456666696369656e63793a3a676574496e707574536e61726b60448201527f42797465733a206f6c64416363496e7075744861736820646f6573206e6f742060648201527f6578697374000000000000000000000000000000000000000000000000000000608482015260a4016107d3565b80611afd5760405162461bcd60e51b815260206004820152604560248201527f50726f6f664f66456666696369656e63793a3a676574496e707574536e61726b60448201527f42797465733a206e6577416363496e7075744861736820646f6573206e6f742060648201527f6578697374000000000000000000000000000000000000000000000000000000608482015260a4016107d3565b67ffffffffffffffff87166000908152606b602090815260409182902054606e5492517fffffffffffffffffffffffffffffffffffffffff0000000000000000000000003360601b16928101929092526034820152605481018490527fffffffffffffffff00000000000000000000000000000000000000000000000060c08a811b8216607484015292831b8116607c8301526084820187905260a4820184905260c482018890529188901b90911660e482015260ec01604051602081830303815290604052925050505b949350505050565b60685460009067ffffffffffffffff7001000000000000000000000000000000008204811691611c1f917801000000000000000000000000000000000000000000000000909104166001614734565b611c2991906145c1565b611c459067ffffffffffffffff16670de0b6b3a7640000614601565b905090565b600054610100900460ff1615808015611c6a5750600054600160ff909116105b80611c845750303b158015611c84575060005460ff166001145b611cf65760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016107d3565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790558015611d5457600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b606a80547fffffffffffffffffffffffff000000000000000000000000000000000000000090811673ffffffffffffffffffffffffffffffffffffffff8f811691909117909255606580547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101008f851602179055606c80549091168c831617905560008052606b6020527fc8cc8bda7ad4886bea3ebbdafa02e79d37c39bf4011696b26a31a0802fd9458b8a9055606980547fffffff000000000000000000000000000000000000000000ffffffffffffffff1668010000000000000000928b16929092027fffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff16919091177c010000000000000000000000000000000000000000000000000000000089151502179055606d611e9387826147ae565b50606e80547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff8716179055606f611ed485826147ae565b506071805473ffffffffffffffffffffffffffffffffffffffff8086167fffffffffffffffffffffffff0000000000000000000000000000000000000000928316179092556070805492851692909116919091179055611f3261395f565b8015611f9557600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050505050565b60695468010000000000000000900473ffffffffffffffffffffffffffffffffffffffff16331461203c5760405162461bcd60e51b815260206004820152603f60248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7954727573746564536560448201527f7175656e6365723a206f6e6c7920747275737465642073657175656e6365720060648201526084016107d3565b606980548215157c0100000000000000000000000000000000000000000000000000000000027fffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff9091161790556040517fbacda50a4a8575be1d91a7ebe29ee45056f3a94f12a2281eb6b43afa33bcefe69061084b90831515815260200190565b6065546040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152600091829161010090910473ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa158015612134573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121589190614570565b60695460685491925060009167ffffffffffffffff918216916801000000000000000082048116916121bd91700100000000000000000000000000000000820481169178010000000000000000000000000000000000000000000000009004166145c1565b6121c79190614734565b6121d191906145c1565b67ffffffffffffffff1690506121e781836148aa565b9250505090565b60655460ff161561228d5760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a4016107d3565b8567ffffffffffffffff168767ffffffffffffffff161061233c5760405162461bcd60e51b815260206004820152605d60248201527f50726f6f664f66456666696369656e63793a3a70726f76654e6f6e446574657260448201527f6d696e697374696353746174653a2066696e616c4e65774261746368206d757360648201527f7420626520626967676572207468616e20696e69744e756d4261746368000000608482015260a4016107d3565b60695467ffffffffffffffff908116908716111561240e5760405162461bcd60e51b815260206004820152606960248201527f50726f6f664f66456666696369656e63793a3a70726f76654e6f6e446574657260448201527f6d696e697374696353746174653a2066696e616c4e65774261746368206d757360648201527f74206265206c657373206f7220657175616c207468616e206c6173745665726960848201527f666965644261746368000000000000000000000000000000000000000000000060a482015260c4016107d3565b67ffffffffffffffff87166000908152606b60205260409020546124c05760405162461bcd60e51b815260206004820152605560248201527f50726f6f664f66456666696369656e63793a3a70726f76654e6f6e446574657260448201527f6d696e697374696353746174653a20696e69744e756d4261746368207374617460648201527f6520726f6f7420646f6573206e6f742065786973740000000000000000000000608482015260a4016107d3565b67ffffffffffffffff86166000908152606b60205260409020546125725760405162461bcd60e51b815260206004820152605660248201527f50726f6f664f66456666696369656e63793a3a70726f76654e6f6e446574657260448201527f6d696e697374696353746174653a2066696e616c4e657742617463682073746160648201527f746520726f6f7420646f6573206e6f7420657869737400000000000000000000608482015260a4016107d3565b600061258088888888611999565b905060007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000016002836040516125b5919061463e565b602060405180830381855afa1580156125d2573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906125f59190614570565b6125ff9190614689565b606c546040805160208101825283815290517f43753b4d00000000000000000000000000000000000000000000000000000000815292935073ffffffffffffffffffffffffffffffffffffffff909116916343753b4d91612669918991899189919060040161469d565b602060405180830381865afa158015612686573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126aa9190614717565b61271c5760405162461bcd60e51b815260206004820152603c60248201527f50726f6f664f66456666696369656e63793a3a70726f76654e6f6e446574657260448201527f6d696e697374696353746174653a20494e56414c49445f50524f4f460000000060648201526084016107d3565b67ffffffffffffffff88166000908152606b60205260409020548690036127d15760405162461bcd60e51b815260206004820152606060248201527f50726f6f664f66456666696369656e63793a3a70726f76654e6f6e446574657260448201527f6d696e697374696353746174653a2073746f72656420726f6f74206d7573742060648201527f626520646966666572656e74207468616e206e657720737461746520726f6f74608482015260a4016107d3565b67ffffffffffffffff88166000908152606b60209081526040918290205482519081529081018890527f10b370e2afd2be06fe3170fec9cb3bbd87233f3deb63d488c0dde59813afdabe910160405180910390a161282d613745565b505050505050505050565b60695468010000000000000000900473ffffffffffffffffffffffffffffffffffffffff1633146128d15760405162461bcd60e51b815260206004820152603f60248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7954727573746564536560448201527f7175656e6365723a206f6e6c7920747275737465642073657175656e6365720060648201526084016107d3565b606d6128dd82826147ae565b507f6b8f723a4c7a5335cafae8a598a0aa0301be1387c037dccc085b62add6448b208160405161084b9190613e2c565b60655460ff16156129ac5760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a4016107d3565b6069547c0100000000000000000000000000000000000000000000000000000000900460ff161515600114612a6f5760405162461bcd60e51b815260206004820152604860248201527f50726f6f664f66456666696369656e63793a3a6973466f72636542617463684160448201527f6c6c6f7765643a206f6e6c7920696620666f726365206261746368206973206160648201527f7661696c61626c65000000000000000000000000000000000000000000000000608482015260a4016107d3565b805180612b0a5760405162461bcd60e51b815260206004820152604260248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365466f72636560448201527f42617463683a204d75737420666f726365206174206c6561737420312062617460648201527f6368000000000000000000000000000000000000000000000000000000000000608482015260a4016107d3565b60685467ffffffffffffffff78010000000000000000000000000000000000000000000000008204811691612b559184917001000000000000000000000000000000009004166148be565b1115612bc95760405162461bcd60e51b815260206004820152603a60248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365466f72636560448201527f42617463683a20466f72636520626174636820696e76616c696400000000000060648201526084016107d3565b60685467ffffffffffffffff680100000000000000008204811660008181526067602052604081205491937001000000000000000000000000000000009004909216915b84811015612ee2576000868281518110612c2957612c296144eb565b602002602001015190508380612c3e90614549565b825180516020918201208185015160408087015181519485019390935283015260c01b7fffffffffffffffff0000000000000000000000000000000000000000000000001660608201529095506000915060680160408051601f19818403018152918152815160209283012067ffffffffffffffff8816600090815260669093529120549091508114612d5f5760405162461bcd60e51b815260206004820152604760248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365466f72636560448201527f426174636865733a20466f7263656420626174636865732064617461206d757360648201527f74206d6174636800000000000000000000000000000000000000000000000000608482015260a4016107d3565b612d6a6001886145ea565b8303612e28574262093a808360400151612d849190614734565b67ffffffffffffffff161115612e285760405162461bcd60e51b815260206004820152604c60248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365466f72636560448201527f42617463683a20466f72636564206261746368206973206e6f7420696e20746960648201527f6d656f757420706572696f640000000000000000000000000000000000000000608482015260a4016107d3565b8151805160209182012081840151604080519384018890528301919091526060808301919091524260c01b7fffffffffffffffff00000000000000000000000000000000000000000000000016608083015233901b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166088820152609c016040516020818303038152906040528051906020012093508580612eca90614549565b96505050508080612eda90614589565b915050612c0d565b50606880544267ffffffffffffffff9081167fffffffffffffffffffffffffffffffff000000000000000000000000000000009092169190911768010000000000000000868316818102929092177fffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff1670010000000000000000000000000000000087851602178455600091825260676020526040808320869055935493519304909116917f648a61dd2438f072f5a1960939abd30f37aea80d2e94c9792ad142d3e0a490a49190a25050505050565b60655460ff1661302a5760405162461bcd60e51b815260206004820152603b60248201527f456d657267656e63794d616e616765723a3a6966456d657267656e637953746160448201527f74653a206f6e6c7920696620656d657267656e6379207374617465000000000060648201526084016107d3565b60705473ffffffffffffffffffffffffffffffffffffffff1633146130b75760405162461bcd60e51b815260206004820152603d60248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7953656375726974794360448201527f6f756e63696c3a206f6e6c7920736563757269747920636f756e63696c00000060648201526084016107d3565b607160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dbc169766040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561312157600080fd5b505af1158015613135573d6000803e3d6000fd5b505050506109056139e5565b60655460ff16156131e05760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a4016107d3565b6069547c0100000000000000000000000000000000000000000000000000000000900460ff1615156001146132a35760405162461bcd60e51b815260206004820152604860248201527f50726f6f664f66456666696369656e63793a3a6973466f72636542617463684160448201527f6c6c6f7765643a206f6e6c7920696620666f726365206261746368206973206160648201527f7661696c61626c65000000000000000000000000000000000000000000000000608482015260a4016107d3565b60006132ad611bd0565b9050818111156133255760405162461bcd60e51b815260206004820152602f60248201527f50726f6f664f66456666696369656e63793a3a666f72636542617463683a206e60448201527f6f7420656e6f756768206d61746963000000000000000000000000000000000060648201526084016107d3565b61ea6083511061339d5760405162461bcd60e51b815260206004820152603a60248201527f50726f6f664f66456666696369656e63793a3a666f72636542617463683a205460448201527f72616e73616374696f6e73206279746573206f766572666c6f7700000000000060648201526084016107d3565b6065546133c790610100900473ffffffffffffffffffffffffffffffffffffffff163330846137cf565b606a54604080517f3ed691ef000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff1691633ed691ef9160048083019260209291908290030181865afa158015613437573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061345b9190614570565b60688054919250780100000000000000000000000000000000000000000000000090910467ffffffffffffffff1690601861349583614549565b91906101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550508380519060200120814260405160200161350e93929190928352602083019190915260c01b7fffffffffffffffff00000000000000000000000000000000000000000000000016604082015260480190565b60408051808303601f1901815291815281516020928301206068547801000000000000000000000000000000000000000000000000900467ffffffffffffffff16600090815260669093529120553233036135de57606854604080518381523360208201526060918101829052600091810191909152780100000000000000000000000000000000000000000000000090910467ffffffffffffffff16907ff94bb37db835f1ab585ee00041849a09b12cd081d77fa15ca070757619cbc9319060800160405180910390a261363b565b606860189054906101000a900467ffffffffffffffff1667ffffffffffffffff167ff94bb37db835f1ab585ee00041849a09b12cd081d77fa15ca070757619cbc931823387604051613632939291906148d6565b60405180910390a25b50505050565b6136496136de565b73ffffffffffffffffffffffffffffffffffffffff81166136d25760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016107d3565b6136db816138e8565b50565b60335473ffffffffffffffffffffffffffffffffffffffff1633146109055760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016107d3565b607160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632072f6c56040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156137af57600080fd5b505af11580156137c3573d6000803e3d6000fd5b50505050610905613ab0565b60405173ffffffffffffffffffffffffffffffffffffffff8085166024830152831660448201526064810182905261363b9085907f23b872dd00000000000000000000000000000000000000000000000000000000906084015b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152613ba5565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526138e39084907fa9059cbb0000000000000000000000000000000000000000000000000000000090606401613829565b505050565b6033805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff166139dc5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e6700000000000000000000000000000000000000000060648201526084016107d3565b610905336138e8565b60655460ff16613a5d5760405162461bcd60e51b815260206004820152603b60248201527f456d657267656e63794d616e616765723a3a6966456d657267656e637953746160448201527f74653a206f6e6c7920696620656d657267656e6379207374617465000000000060648201526084016107d3565b606580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690556040517f1e5e34eea33501aecf2ebec9fe0e884a40804275ea7fe10b2ba084c8374308b390600090a1565b60655460ff1615613b4f5760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a4016107d3565b606580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556040517f2261efe5aef6fedc1fd1550b25facc9181745623049c7901287030b9ad1a549790600090a1565b6000613c07826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16613c979092919063ffffffff16565b8051909150156138e35780806020019051810190613c259190614717565b6138e35760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016107d3565b6060611bc88484600085856000808673ffffffffffffffffffffffffffffffffffffffff168587604051613ccb919061463e565b60006040518083038185875af1925050503d8060008114613d08576040519150601f19603f3d011682016040523d82523d6000602084013e613d0d565b606091505b5091509150613d1e87838387613d29565b979650505050505050565b60608315613da5578251600003613d9e5773ffffffffffffffffffffffffffffffffffffffff85163b613d9e5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016107d3565b5081611bc8565b611bc88383815115613dba5781518083602001fd5b8060405162461bcd60e51b81526004016107d39190613e2c565b60005b83811015613def578181015183820152602001613dd7565b8381111561363b5750506000910152565b60008151808452613e18816020860160208601613dd4565b601f01601f19169290920160200192915050565b602081526000613e3f6020830184613e00565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff811681146136db57600080fd5b8035613e7381613e46565b919050565b600060208284031215613e8a57600080fd5b8135613e3f81613e46565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516080810167ffffffffffffffff81118282101715613ee757613ee7613e95565b60405290565b6040516060810167ffffffffffffffff81118282101715613ee757613ee7613e95565b604051601f8201601f1916810167ffffffffffffffff81118282101715613f3957613f39613e95565b604052919050565b600067ffffffffffffffff821115613f5b57613f5b613e95565b5060051b60200190565b600082601f830112613f7657600080fd5b813567ffffffffffffffff811115613f9057613f90613e95565b613fa36020601f19601f84011601613f10565b818152846020838601011115613fb857600080fd5b816020850160208301376000918101602001919091529392505050565b803567ffffffffffffffff81168114613e7357600080fd5b6000602080838503121561400057600080fd5b823567ffffffffffffffff8082111561401857600080fd5b818501915085601f83011261402c57600080fd5b813561403f61403a82613f41565b613f10565b81815260059190911b8301840190848101908883111561405e57600080fd5b8585015b838110156140f75780358581111561407a5760008081fd5b86016080818c03601f19018113156140925760008081fd5b61409a613ec4565b89830135888111156140ac5760008081fd5b6140ba8e8c83870101613f65565b8252506040808401358b83015260606140d4818601613fd5565b828401526140e3848601613fd5565b908301525085525050918601918601614062565b5098975050505050505050565b60006020828403121561411657600080fd5b613e3f82613fd5565b806040810183101561413057600080fd5b92915050565b6000806000806000806000610180888a03121561415257600080fd5b61415b88613fd5565b965061416960208901613fd5565b955060408801359450606088013593506141868960808a0161411f565b925061014088018981111561419a57600080fd5b60c0890192506141aa8a8261411f565b91505092959891949750929550565b600080600080608085870312156141cf57600080fd5b6141d885613fd5565b93506141e660208601613fd5565b93969395505050506040820135916060013590565b80151581146136db57600080fd5b8035613e73816141fb565b60008060008060008060008060008060006101608c8e03121561423657600080fd5b61423f8c613e68565b9a5061424d60208d01613e68565b995061425b60408d01613e68565b985060608c0135975061427060808d01613e68565b965061427e60a08d01614209565b955067ffffffffffffffff8060c08e0135111561429a57600080fd5b6142aa8e60c08f01358f01613f65565b95506142b860e08e01613fd5565b9450806101008e013511156142cc57600080fd5b506142de8d6101008e01358e01613f65565b92506142ed6101208d01613e68565b91506142fc6101408d01613e68565b90509295989b509295989b9093969950565b60006020828403121561432057600080fd5b8135613e3f816141fb565b60006020828403121561433d57600080fd5b813567ffffffffffffffff81111561435457600080fd5b611bc884828501613f65565b6000602080838503121561437357600080fd5b823567ffffffffffffffff8082111561438b57600080fd5b818501915085601f83011261439f57600080fd5b81356143ad61403a82613f41565b81815260059190911b830184019084810190888311156143cc57600080fd5b8585015b838110156140f7578035858111156143e85760008081fd5b86016060818c03601f19018113156144005760008081fd5b614408613eed565b898301358881111561441a5760008081fd5b6144288e8c83870101613f65565b8252506040808401358b830152614440838501613fd5565b90820152855250509186019186016143d0565b6000806040838503121561446657600080fd5b823567ffffffffffffffff81111561447d57600080fd5b61448985828601613f65565b95602094909401359450505050565b600181811c908216806144ac57607f821691505b6020821081036144e5577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600067ffffffffffffffff8083168181036145665761456661451a565b6001019392505050565b60006020828403121561458257600080fd5b5051919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036145ba576145ba61451a565b5060010190565b600067ffffffffffffffff838116908316818110156145e2576145e261451a565b039392505050565b6000828210156145fc576145fc61451a565b500390565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156146395761463961451a565b500290565b60008251614650818460208701613dd4565b9190910192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000826146985761469861465a565b500690565b61012081016040808784376000838201818152879190815b60028110156146d5578484833790840182815292840192906001016146b5565b5050828760c0870137610100850181815286935091505b600181101561470b5782518252602092830192909101906001016146ec565b50505095945050505050565b60006020828403121561472957600080fd5b8151613e3f816141fb565b600067ffffffffffffffff8083168185168083038211156147575761475761451a565b01949350505050565b601f8211156138e357600081815260208120601f850160051c810160208610156147875750805b601f850160051c820191505b818110156147a657828155600101614793565b505050505050565b815167ffffffffffffffff8111156147c8576147c8613e95565b6147dc816147d68454614498565b84614760565b602080601f83116001811461482f57600084156147f95750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b1785556147a6565b600085815260208120601f198616915b8281101561485e5788860151825594840194600190910190840161483f565b508582101561489a57878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b6000826148b9576148b961465a565b500490565b600082198211156148d1576148d161451a565b500190565b83815273ffffffffffffffffffffffffffffffffffffffff8316602082015260606040820152600061490b6060830184613e00565b9594505050505056fea26469706673582212207c6b25ea7b3ac634e02bf0cce36a2d1a9ef1d74d076f5577d417755d876e61f664736f6c634300080f0033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/compiled-contracts/ProofOfEfficiencyMock.json b/compiled-contracts/ProofOfEfficiencyMock.json index f042c11ab..6cc13b143 100644 --- a/compiled-contracts/ProofOfEfficiencyMock.json +++ b/compiled-contracts/ProofOfEfficiencyMock.json @@ -94,7 +94,7 @@ "type": "bytes32" } ], - "name": "ProofDifferentState", + "name": "ProveNonDeterministicState", "type": "event" }, { @@ -712,7 +712,7 @@ "type": "uint256[2]" } ], - "name": "proofDifferentState", + "name": "proveNonDeterministicState", "outputs": [], "stateMutability": "nonpayable", "type": "function" @@ -1100,8 +1100,8 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b506151d6806100206000396000f3fe608060405234801561001057600080fd5b506004361061032b5760003560e01c80638c4a0af7116101b2578063c89e42df116100f9578063dbc16976116100a2578063eaeb077b1161007c578063eaeb077b14610810578063f2fde38b14610823578063f755276114610836578063fe16564f1461084557600080fd5b8063dbc16976146107b8578063e7a7ed02146107c0578063e8bf92ed146107f057600080fd5b8063d0ae98dd116100d3578063d0ae98dd14610765578063d8d1091b14610778578063d8f54db01461078b57600080fd5b8063c89e42df14610706578063cfa8ed4714610719578063d02103ca1461074557600080fd5b8063ab9fc5ef1161015b578063b4d63f5811610135578063b4d63f58146106ae578063b6b0b097146106ce578063c0cad302146106f357600080fd5b8063ab9fc5ef14610687578063adc879e914610691578063b02286c0146106a557600080fd5b806399f5634e1161018c57806399f5634e1461064c5780639b79676014610654578063a3c573eb1461066757600080fd5b80638c4a0af7146106085780638da5cb5b1461061b57806396dc3d391461063957600080fd5b80635437988d11610276578063715018a61161021f57806379847057116101f957806379847057146105d95780637fcb3653146105e157806381df7d3f146105f557600080fd5b8063715018a6146105ab5780637152facf146105b3578063748608de146105c657600080fd5b80636766f09d116102505780636766f09d146105655780636b8616ce146105785780636ff512cc1461059857600080fd5b80635437988d1461049e57806355b925e6146104b1578063574f649e146104c457600080fd5b806327eb6c0f116102d857806345605267116102b257806345605267146104405780635392c5e014610468578063542028d51461049657600080fd5b806327eb6c0f146103c85780633c1582671461040d578063423fa8561461042057600080fd5b80631a26da14116103095780631a26da14146103985780631c1083e2146103ad5780632072f6c5146103c057600080fd5b8063107bf28c1461033057806315064c961461034e57806319d8ac611461036b575b600080fd5b610338610858565b60405161034591906145eb565b60405180910390f35b60655461035b9060ff1681565b6040519015158152602001610345565b60685461037f9067ffffffffffffffff1681565b60405167ffffffffffffffff9091168152602001610345565b6103ab6103a636600461461b565b6108e6565b005b6103ab6103bb366004614672565b61090b565b6103ab610a17565b6070546103e89073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610345565b6103ab61041b3660046147cf565b610ac8565b60685461037f9068010000000000000000900467ffffffffffffffff1681565b60685461037f90700100000000000000000000000000000000900467ffffffffffffffff1681565b6104886104763660046148e6565b606b6020526000908152604090205481565b604051908152602001610345565b6103386113bf565b6103ab6104ac366004614672565b6113cc565b6103ab6104bf366004614918565b61141b565b6104886104d236600461499b565b835160209485012060408051808701979097528681019190915260608087019490945260c09290921b7fffffffffffffffff00000000000000000000000000000000000000000000000016608086015290911b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001660888401528051808403607c018152609c9093019052815191012090565b6103ab610573366004614918565b6119e4565b6104886105863660046148e6565b60666020526000908152604090205481565b6103ab6105a6366004614672565b61202e565b6103ab612148565b6103386105c1366004614a11565b61215a565b6103ab6105d4366004614918565b612390565b6104886125f9565b60695461037f9067ffffffffffffffff1681565b6103ab610603366004614a6c565b612673565b6103ab610616366004614b66565b6129cc565b60335473ffffffffffffffffffffffffffffffffffffffff166103e8565b6103ab6106473660046148e6565b612ae6565b610488612b29565b6103ab6106623660046148e6565b612c5a565b6071546103e89073ffffffffffffffffffffffffffffffffffffffff1681565b61037f62093a8081565b606e5461037f9067ffffffffffffffff1681565b61048861ea6081565b6104886106bc3660046148e6565b60676020526000908152604090205481565b6065546103e890610100900473ffffffffffffffffffffffffffffffffffffffff1681565b6103ab610701366004614b83565b612ca9565b6103ab610714366004614b83565b612cc1565b6069546103e89068010000000000000000900473ffffffffffffffffffffffffffffffffffffffff1681565b606a546103e89073ffffffffffffffffffffffffffffffffffffffff1681565b610488610773366004614a11565b612d96565b6103ab610786366004614bc0565b613042565b60695461035b907c0100000000000000000000000000000000000000000000000000000000900460ff1681565b6103ab6136e7565b60685461037f907801000000000000000000000000000000000000000000000000900467ffffffffffffffff1681565b606c546103e89073ffffffffffffffffffffffffffffffffffffffff1681565b6103ab61081e366004614cb3565b613876565b6103ab610831366004614672565b613d76565b61048867016345785d8a000081565b6103ab610853366004614cf8565b613e13565b606f805461086590614d24565b80601f016020809104026020016040519081016040528092919081815260200182805461089190614d24565b80156108de5780601f106108b3576101008083540402835291602001916108de565b820191906000526020600020905b8154815290600101906020018083116108c157829003601f168201915b505050505081565b6108ee613e36565b67ffffffffffffffff909116600090815260676020526040902055565b60705473ffffffffffffffffffffffffffffffffffffffff16331461099d5760405162461bcd60e51b815260206004820152603d60248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7953656375726974794360448201527f6f756e63696c3a206f6e6c7920736563757269747920636f756e63696c00000060648201526084015b60405180910390fd5b607080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f373a9d1d60f01a33ff86d540991f09f5c5d7482656794de80be077c5eb9693d9906020015b60405180910390a150565b60655460ff1615610ab65760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a401610994565b610abe613e36565b610ac6613e9d565b565b60655460ff1615610b675760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a401610994565b60695468010000000000000000900473ffffffffffffffffffffffffffffffffffffffff163314610c005760405162461bcd60e51b815260206004820152603f60248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7954727573746564536560448201527f7175656e6365723a206f6e6c7920747275737465642073657175656e636572006064820152608401610994565b805160685467ffffffffffffffff680100000000000000008204811660008181526067602052604081205483851694929370010000000000000000000000000000000090930490921691905b858110156111b0576000878281518110610c6857610c68614d77565b602002602001015190506000816060015167ffffffffffffffff161115610e815783610c9381614dd5565b945050600081600001518051906020012082602001518360600151604051602001610cf693929190928352602083019190915260c01b7fffffffffffffffff00000000000000000000000000000000000000000000000016604082015260480190565b60408051601f19818403018152918152815160209283012067ffffffffffffffff8816600090815260669093529120549091508114610dc35760405162461bcd60e51b815260206004820152604260248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365426174636860448201527f65733a20466f7263656420626174636865732064617461206d757374206d617460648201527f6368000000000000000000000000000000000000000000000000000000000000608482015260a401610994565b816060015167ffffffffffffffff16826040015167ffffffffffffffff161015610e7b5760405162461bcd60e51b815260206004820152605d60248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365426174636860448201527f65733a20466f7263656420626174636865732074696d657374616d70206d757360648201527f7420626520626967676572206f7220657175616c207468616e206d696e000000608482015260a401610994565b5061101b565b60208101511580610f305750606a5460208201516040517f257b363200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9092169163257b363291610eea9160040190815260200190565b6020604051808303816000875af1158015610f09573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f2d9190614dfc565b15155b610fa25760405162461bcd60e51b815260206004820152603f60248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365426174636860448201527f65733a20476c6f62616c206578697420726f6f74206d757374206578697374006064820152608401610994565b80515161ea601161101b5760405162461bcd60e51b815260206004820152603f60248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365426174636860448201527f65733a205472616e73616374696f6e73206279746573206f766572666c6f77006064820152608401610994565b8567ffffffffffffffff16816040015167ffffffffffffffff1610158015611051575042816040015167ffffffffffffffff1611155b6110e95760405162461bcd60e51b815260206004820152604260248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365426174636860448201527f65733a2054696d657374616d70206d75737420626520696e736964652072616e60648201527f6765000000000000000000000000000000000000000000000000000000000000608482015260a401610994565b805180516020918201208183015160408085015181519485018890529084019290925260608084019190915260c09190911b7fffffffffffffffff00000000000000000000000000000000000000000000000016608083015233901b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166088820152609c01604051602081830303815290604052805190602001209250848061119290614dd5565b955050806040015195505080806111a890614e15565b915050610c4c565b5060685467ffffffffffffffff7801000000000000000000000000000000000000000000000000909104811690831611156112535760405162461bcd60e51b815260206004820152603a60248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365426174636860448201527f65733a20466f7263652062617463686573206f766572666c6f770000000000006064820152608401610994565b60685460009061128190700100000000000000000000000000000000900467ffffffffffffffff1684614e4d565b6112959067ffffffffffffffff1687614e76565b6068805467ffffffffffffffff868116700100000000000000000000000000000000027fffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff8983166801000000000000000081027fffffffffffffffffffffffffffffffff00000000000000000000000000000000909516938c169390931793909317929092169190911790915560009081526067602052604090208390559050611372333061134c8467016345785d8a0000614e8d565b606554610100900473ffffffffffffffffffffffffffffffffffffffff16929190613f27565b6068546040516801000000000000000090910467ffffffffffffffff16907f303446e6a8cb73c83dff421c0b1d5e5ce0719dab1bff13660fc254e58cc17fce90600090a250505050505050565b606d805461086590614d24565b6113d4613e36565b606c80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60655460ff16156114ba5760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a401610994565b60695467ffffffffffffffff90811690881611156115665760405162461bcd60e51b815260206004820152605b60248201527f50726f6f664f66456666696369656e63793a3a7665726966794261746368657360448201527f3a20696e69744e756d4261746368206d757374206265206c657373206f72206560648201527f7175616c207468616e206c617374566572696669656442617463680000000000608482015260a401610994565b60695467ffffffffffffffff908116908716116116115760405162461bcd60e51b815260206004820152605560248201527f50726f6f664f66456666696369656e63793a3a7665726966794261746368657360448201527f3a2066696e616c4e65774261746368206d75737420626520626967676572207460648201527f68616e206c617374566572696669656442617463680000000000000000000000608482015260a401610994565b67ffffffffffffffff87166000908152606b60205260409020546116c35760405162461bcd60e51b815260206004820152604860248201527f50726f6f664f66456666696369656e63793a3a7665726966794261746368657360448201527f3a20696e69744e756d426174636820737461746520726f6f7420646f6573206e60648201527f6f74206578697374000000000000000000000000000000000000000000000000608482015260a401610994565b60006116d18888888861215a565b905060007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000016002836040516117069190614eca565b602060405180830381855afa158015611723573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906117469190614dfc565b6117509190614f15565b606c546040805160208101825283815290517f43753b4d00000000000000000000000000000000000000000000000000000000815292935073ffffffffffffffffffffffffffffffffffffffff909116916343753b4d916117ba9189918991899190600401614f29565b602060405180830381865afa1580156117d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117fb9190614fa3565b61186d5760405162461bcd60e51b815260206004820152602f60248201527f50726f6f664f66456666696369656e63793a3a7665726966794261746368657360448201527f3a20494e56414c49445f50524f4f4600000000000000000000000000000000006064820152608401610994565b6069546118cb90339061188a9067ffffffffffffffff168b614e4d565b67ffffffffffffffff1661189c612b29565b6118a69190614e8d565b606554610100900473ffffffffffffffffffffffffffffffffffffffff169190613fe5565b606980547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff8a169081179091556000908152606b602052604090819020879055606a5490517f33d6247d0000000000000000000000000000000000000000000000000000000081526004810189905273ffffffffffffffffffffffffffffffffffffffff909116906333d6247d90602401600060405180830381600087803b15801561198057600080fd5b505af1158015611994573d6000803e3d6000fd5b505060405188815233925067ffffffffffffffff8b1691507f9c72852172521097ba7e1482e6b44b351323df0155f97f4ea18fcec28e1f59669060200160405180910390a3505050505050505050565b60655460ff1615611a835760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a401610994565b8567ffffffffffffffff168767ffffffffffffffff1610611b325760405162461bcd60e51b815260206004820152605660248201527f50726f6f664f66456666696369656e63793a3a70726f6f66446966666572656e60448201527f7453746174653a2066696e616c4e65774261746368206d75737420626520626960648201527f67676572207468616e20696e69744e756d426174636800000000000000000000608482015260a401610994565b60695467ffffffffffffffff9081169087161115611c045760405162461bcd60e51b815260206004820152606260248201527f50726f6f664f66456666696369656e63793a3a70726f6f66446966666572656e60448201527f7453746174653a2066696e616c4e65774261746368206d757374206265206c6560648201527f7373206f7220657175616c207468616e206c617374566572696669656442617460848201527f636800000000000000000000000000000000000000000000000000000000000060a482015260c401610994565b67ffffffffffffffff87166000908152606b6020526040902054611cb65760405162461bcd60e51b815260206004820152604e60248201527f50726f6f664f66456666696369656e63793a3a70726f6f66446966666572656e60448201527f7453746174653a20696e69744e756d426174636820737461746520726f6f742060648201527f646f6573206e6f74206578697374000000000000000000000000000000000000608482015260a401610994565b67ffffffffffffffff86166000908152606b6020526040902054611d685760405162461bcd60e51b815260206004820152604f60248201527f50726f6f664f66456666696369656e63793a3a70726f6f66446966666572656e60448201527f7453746174653a2066696e616c4e6577426174636820737461746520726f6f7460648201527f20646f6573206e6f742065786973740000000000000000000000000000000000608482015260a401610994565b6000611d768888888861215a565b905060007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001600283604051611dab9190614eca565b602060405180830381855afa158015611dc8573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190611deb9190614dfc565b611df59190614f15565b606c546040805160208101825283815290517f43753b4d00000000000000000000000000000000000000000000000000000000815292935073ffffffffffffffffffffffffffffffffffffffff909116916343753b4d91611e5f9189918991899190600401614f29565b602060405180830381865afa158015611e7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ea09190614fa3565b611f125760405162461bcd60e51b815260206004820152603560248201527f50726f6f664f66456666696369656e63793a3a70726f6f66446966666572656e60448201527f7453746174653a20494e56414c49445f50524f4f4600000000000000000000006064820152608401610994565b67ffffffffffffffff88166000908152606b6020526040902054869003611fc75760405162461bcd60e51b815260206004820152605960248201527f50726f6f664f66456666696369656e63793a3a70726f6f66446966666572656e60448201527f7453746174653a2073746f72656420726f6f74206d757374206265206469666660648201527f6572656e74207468616e206e657720737461746520726f6f7400000000000000608482015260a401610994565b67ffffffffffffffff88166000908152606b60209081526040918290205482519081529081018890527fe579d6d18f02941e1d0f59bff70f1b2c894edc991badab38343786df2846fe55910160405180910390a1612023613e9d565b505050505050505050565b60695468010000000000000000900473ffffffffffffffffffffffffffffffffffffffff1633146120c75760405162461bcd60e51b815260206004820152603f60248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7954727573746564536560448201527f7175656e6365723a206f6e6c7920747275737465642073657175656e636572006064820152608401610994565b606980547fffffffff0000000000000000000000000000000000000000ffffffffffffffff166801000000000000000073ffffffffffffffffffffffffffffffffffffffff8416908102919091179091556040519081527ff54144f9611984021529f814a1cb6a41e22c58351510a0d9f7e822618abb9cc090602001610a0c565b612150613e36565b610ac66000614040565b67ffffffffffffffff80851660008181526067602052604080822054938716825290205460609291158061218d57508115155b6122255760405162461bcd60e51b815260206004820152604560248201527f50726f6f664f66456666696369656e63793a3a676574496e707574536e61726b60448201527f42797465733a206f6c64416363496e7075744861736820646f6573206e6f742060648201527f6578697374000000000000000000000000000000000000000000000000000000608482015260a401610994565b806122be5760405162461bcd60e51b815260206004820152604560248201527f50726f6f664f66456666696369656e63793a3a676574496e707574536e61726b60448201527f42797465733a206e6577416363496e7075744861736820646f6573206e6f742060648201527f6578697374000000000000000000000000000000000000000000000000000000608482015260a401610994565b67ffffffffffffffff87166000908152606b602090815260409182902054606e5492517fffffffffffffffffffffffffffffffffffffffff0000000000000000000000003360601b16928101929092526034820152605481018490527fffffffffffffffff00000000000000000000000000000000000000000000000060c08a811b8216607484015292831b8116607c8301526084820187905260a4820184905260c482018890529188901b90911660e482015260ec0160405160208183030381529060405292505050949350505050565b612398613e36565b60695467ffffffffffffffff90811690881611156124445760405162461bcd60e51b815260206004820152604a60248201527f50726f6f664f66456666696369656e63793a3a7665726966794261746368657360448201527f3a205f6c61737456657269666965644261746368206d757374206265206c657360648201527f73206f7220657175616c00000000000000000000000000000000000000000000608482015260a401610994565b60695467ffffffffffffffff908116908716116124ef5760405162461bcd60e51b815260206004820152605860248201527f50726f6f664f66456666696369656e63793a3a7665726966794261746368657360448201527f3a206e657756657269666965644261746368206d75737420626520626967676560648201527f72207468616e206c617374566572696669656442617463680000000000000000608482015260a401610994565b67ffffffffffffffff808816600090815260676020526040808220549289168252902054816125865760405162461bcd60e51b815260206004820152603e60248201527f50726f6f664f66456666696369656e63793a3a76657269667942617463683a2060448201527f6f6c64416363496e7075744861736820646f6573206e6f7420657869737400006064820152608401610994565b806118cb5760405162461bcd60e51b815260206004820152603e60248201527f50726f6f664f66456666696369656e63793a3a76657269667942617463683a2060448201527f6e6577416363496e7075744861736820646f6573206e6f7420657869737400006064820152608401610994565b60685460009067ffffffffffffffff7001000000000000000000000000000000008204811691612648917801000000000000000000000000000000000000000000000000909104166001614fc0565b6126529190614e4d565b61266e9067ffffffffffffffff16670de0b6b3a7640000614e8d565b905090565b600054610100900460ff16158080156126935750600054600160ff909116105b806126ad5750303b1580156126ad575060005460ff166001145b61271f5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610994565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561277d57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b606a80547fffffffffffffffffffffffff000000000000000000000000000000000000000090811673ffffffffffffffffffffffffffffffffffffffff8f811691909117909255606580547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101008f851602179055606c80549091168c831617905560008052606b6020527fc8cc8bda7ad4886bea3ebbdafa02e79d37c39bf4011696b26a31a0802fd9458b8a9055606980547fffffff000000000000000000000000000000000000000000ffffffffffffffff1668010000000000000000928b16929092027fffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff16919091177c010000000000000000000000000000000000000000000000000000000089151502179055606d6128bc878261503a565b50606e80547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff8716179055606f6128fd858261503a565b506071805473ffffffffffffffffffffffffffffffffffffffff8086167fffffffffffffffffffffffff000000000000000000000000000000000000000092831617909255607080549285169290911691909117905561295b6140b7565b80156129be57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050505050565b60695468010000000000000000900473ffffffffffffffffffffffffffffffffffffffff163314612a655760405162461bcd60e51b815260206004820152603f60248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7954727573746564536560448201527f7175656e6365723a206f6e6c7920747275737465642073657175656e636572006064820152608401610994565b606980548215157c0100000000000000000000000000000000000000000000000000000000027fffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff9091161790556040517fbacda50a4a8575be1d91a7ebe29ee45056f3a94f12a2281eb6b43afa33bcefe690610a0c90831515815260200190565b612aee613e36565b606980547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff92909216919091179055565b6065546040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152600091829161010090910473ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa158015612ba0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bc49190614dfc565b60695460685491925060009167ffffffffffffffff91821691680100000000000000008204811691612c299170010000000000000000000000000000000082048116917801000000000000000000000000000000000000000000000000900416614e4d565b612c339190614fc0565b612c3d9190614e4d565b67ffffffffffffffff169050612c538183615136565b9250505090565b612c62613e36565b6068805467ffffffffffffffff90921668010000000000000000027fffffffffffffffffffffffffffffffff0000000000000000ffffffffffffffff909216919091179055565b612cb1613e36565b606f612cbd828261503a565b5050565b60695468010000000000000000900473ffffffffffffffffffffffffffffffffffffffff163314612d5a5760405162461bcd60e51b815260206004820152603f60248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7954727573746564536560448201527f7175656e6365723a206f6e6c7920747275737465642073657175656e636572006064820152608401610994565b606d612d66828261503a565b507f6b8f723a4c7a5335cafae8a598a0aa0301be1387c037dccc085b62add6448b2081604051610a0c91906145eb565b60695460009067ffffffffffffffff868116911614612e435760405162461bcd60e51b815260206004820152604160248201527f50726f6f664f66456666696369656e63793a3a76657269667942617463683a2060448201527f5f6c6173745665726966696564426174636820646f6573206e6f74206d61746360648201527f6800000000000000000000000000000000000000000000000000000000000000608482015260a401610994565b8467ffffffffffffffff168467ffffffffffffffff1611612ef25760405162461bcd60e51b815260206004820152605660248201527f50726f6f664f66456666696369656e63793a3a76657269667942617463683a2060448201527f6e657756657269666965644261746368206d757374206265206269676765722060648201527f7468616e206c6173745665726966696564426174636800000000000000000000608482015260a401610994565b60685467ffffffffffffffff6801000000000000000090910481169085161115612faa5760405162461bcd60e51b815260206004820152604260248201527f50726f6f664f66456666696369656e63793a3a76657269667942617463683a2060448201527f626174636820646f6573206e6f742068617665206265656e2073657175656e6360648201527f6564000000000000000000000000000000000000000000000000000000000000608482015260a401610994565b6000612fb88686868661215a565b905060007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001600283604051612fed9190614eca565b602060405180830381855afa15801561300a573d6000803e3d6000fd5b5050506040513d601f19601f8201168201806040525081019061302d9190614dfc565b6130379190614f15565b979650505050505050565b60655460ff16156130e15760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a401610994565b6069547c0100000000000000000000000000000000000000000000000000000000900460ff1615156001146131a45760405162461bcd60e51b815260206004820152604860248201527f50726f6f664f66456666696369656e63793a3a6973466f72636542617463684160448201527f6c6c6f7765643a206f6e6c7920696620666f726365206261746368206973206160648201527f7661696c61626c65000000000000000000000000000000000000000000000000608482015260a401610994565b80518061323f5760405162461bcd60e51b815260206004820152604260248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365466f72636560448201527f42617463683a204d75737420666f726365206174206c6561737420312062617460648201527f6368000000000000000000000000000000000000000000000000000000000000608482015260a401610994565b60685467ffffffffffffffff7801000000000000000000000000000000000000000000000000820481169161328a91849170010000000000000000000000000000000090041661514a565b11156132fe5760405162461bcd60e51b815260206004820152603a60248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365466f72636560448201527f42617463683a20466f72636520626174636820696e76616c69640000000000006064820152608401610994565b60685467ffffffffffffffff680100000000000000008204811660008181526067602052604081205491937001000000000000000000000000000000009004909216915b8481101561361757600086828151811061335e5761335e614d77565b60200260200101519050838061337390614dd5565b825180516020918201208185015160408087015181519485019390935283015260c01b7fffffffffffffffff0000000000000000000000000000000000000000000000001660608201529095506000915060680160408051601f19818403018152918152815160209283012067ffffffffffffffff88166000908152606690935291205490915081146134945760405162461bcd60e51b815260206004820152604760248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365466f72636560448201527f426174636865733a20466f7263656420626174636865732064617461206d757360648201527f74206d6174636800000000000000000000000000000000000000000000000000608482015260a401610994565b61349f600188614e76565b830361355d574262093a8083604001516134b99190614fc0565b67ffffffffffffffff16111561355d5760405162461bcd60e51b815260206004820152604c60248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365466f72636560448201527f42617463683a20466f72636564206261746368206973206e6f7420696e20746960648201527f6d656f757420706572696f640000000000000000000000000000000000000000608482015260a401610994565b8151805160209182012081840151604080519384018890528301919091526060808301919091524260c01b7fffffffffffffffff00000000000000000000000000000000000000000000000016608083015233901b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166088820152609c0160405160208183030381529060405280519060200120935085806135ff90614dd5565b9650505050808061360f90614e15565b915050613342565b50606880544267ffffffffffffffff9081167fffffffffffffffffffffffffffffffff000000000000000000000000000000009092169190911768010000000000000000868316818102929092177fffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff1670010000000000000000000000000000000087851602178455600091825260676020526040808320869055935493519304909116917f648a61dd2438f072f5a1960939abd30f37aea80d2e94c9792ad142d3e0a490a49190a25050505050565b60655460ff1661375f5760405162461bcd60e51b815260206004820152603b60248201527f456d657267656e63794d616e616765723a3a6966456d657267656e637953746160448201527f74653a206f6e6c7920696620656d657267656e637920737461746500000000006064820152608401610994565b60705473ffffffffffffffffffffffffffffffffffffffff1633146137ec5760405162461bcd60e51b815260206004820152603d60248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7953656375726974794360448201527f6f756e63696c3a206f6e6c7920736563757269747920636f756e63696c0000006064820152608401610994565b607160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dbc169766040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561385657600080fd5b505af115801561386a573d6000803e3d6000fd5b50505050610ac661413d565b60655460ff16156139155760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a401610994565b6069547c0100000000000000000000000000000000000000000000000000000000900460ff1615156001146139d85760405162461bcd60e51b815260206004820152604860248201527f50726f6f664f66456666696369656e63793a3a6973466f72636542617463684160448201527f6c6c6f7765643a206f6e6c7920696620666f726365206261746368206973206160648201527f7661696c61626c65000000000000000000000000000000000000000000000000608482015260a401610994565b60006139e26125f9565b905081811115613a5a5760405162461bcd60e51b815260206004820152602f60248201527f50726f6f664f66456666696369656e63793a3a666f72636542617463683a206e60448201527f6f7420656e6f756768206d6174696300000000000000000000000000000000006064820152608401610994565b61ea60835110613ad25760405162461bcd60e51b815260206004820152603a60248201527f50726f6f664f66456666696369656e63793a3a666f72636542617463683a205460448201527f72616e73616374696f6e73206279746573206f766572666c6f770000000000006064820152608401610994565b606554613afc90610100900473ffffffffffffffffffffffffffffffffffffffff16333084613f27565b606a54604080517f3ed691ef000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff1691633ed691ef9160048083019260209291908290030181865afa158015613b6c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b909190614dfc565b60688054919250780100000000000000000000000000000000000000000000000090910467ffffffffffffffff16906018613bca83614dd5565b91906101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505083805190602001208142604051602001613c4393929190928352602083019190915260c01b7fffffffffffffffff00000000000000000000000000000000000000000000000016604082015260480190565b60408051808303601f1901815291815281516020928301206068547801000000000000000000000000000000000000000000000000900467ffffffffffffffff1660009081526066909352912055323303613d1357606854604080518381523360208201526060918101829052600091810191909152780100000000000000000000000000000000000000000000000090910467ffffffffffffffff16907ff94bb37db835f1ab585ee00041849a09b12cd081d77fa15ca070757619cbc9319060800160405180910390a2613d70565b606860189054906101000a900467ffffffffffffffff1667ffffffffffffffff167ff94bb37db835f1ab585ee00041849a09b12cd081d77fa15ca070757619cbc931823387604051613d6793929190615162565b60405180910390a25b50505050565b613d7e613e36565b73ffffffffffffffffffffffffffffffffffffffff8116613e075760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610994565b613e1081614040565b50565b613e1b613e36565b67ffffffffffffffff166000908152606b6020526040902055565b60335473ffffffffffffffffffffffffffffffffffffffff163314610ac65760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610994565b607160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632072f6c56040518163ffffffff1660e01b8152600401600060405180830381600087803b158015613f0757600080fd5b505af1158015613f1b573d6000803e3d6000fd5b50505050610ac6614208565b60405173ffffffffffffffffffffffffffffffffffffffff80851660248301528316604482015260648101829052613d709085907f23b872dd00000000000000000000000000000000000000000000000000000000906084015b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526142fd565b60405173ffffffffffffffffffffffffffffffffffffffff831660248201526044810182905261403b9084907fa9059cbb0000000000000000000000000000000000000000000000000000000090606401613f81565b505050565b6033805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff166141345760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610994565b610ac633614040565b60655460ff166141b55760405162461bcd60e51b815260206004820152603b60248201527f456d657267656e63794d616e616765723a3a6966456d657267656e637953746160448201527f74653a206f6e6c7920696620656d657267656e637920737461746500000000006064820152608401610994565b606580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690556040517f1e5e34eea33501aecf2ebec9fe0e884a40804275ea7fe10b2ba084c8374308b390600090a1565b60655460ff16156142a75760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a401610994565b606580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556040517f2261efe5aef6fedc1fd1550b25facc9181745623049c7901287030b9ad1a549790600090a1565b600061435f826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166143ef9092919063ffffffff16565b80519091501561403b578080602001905181019061437d9190614fa3565b61403b5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610994565b60606143fe8484600085614408565b90505b9392505050565b6060824710156144805760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610994565b73ffffffffffffffffffffffffffffffffffffffff85163b6144e45760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610994565b6000808673ffffffffffffffffffffffffffffffffffffffff16858760405161450d9190614eca565b60006040518083038185875af1925050503d806000811461454a576040519150601f19603f3d011682016040523d82523d6000602084013e61454f565b606091505b509150915061303782828660608315614569575081614401565b8251156145795782518084602001fd5b8160405162461bcd60e51b815260040161099491906145eb565b60005b838110156145ae578181015183820152602001614596565b83811115613d705750506000910152565b600081518084526145d7816020860160208601614593565b601f01601f19169290920160200192915050565b60208152600061440160208301846145bf565b803567ffffffffffffffff8116811461461657600080fd5b919050565b6000806040838503121561462e57600080fd5b614637836145fe565b946020939093013593505050565b73ffffffffffffffffffffffffffffffffffffffff81168114613e1057600080fd5b803561461681614645565b60006020828403121561468457600080fd5b813561440181614645565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516080810167ffffffffffffffff811182821017156146e1576146e161468f565b60405290565b6040516060810167ffffffffffffffff811182821017156146e1576146e161468f565b604051601f8201601f1916810167ffffffffffffffff811182821017156147335761473361468f565b604052919050565b600067ffffffffffffffff8211156147555761475561468f565b5060051b60200190565b600082601f83011261477057600080fd5b813567ffffffffffffffff81111561478a5761478a61468f565b61479d6020601f19601f8401160161470a565b8181528460208386010111156147b257600080fd5b816020850160208301376000918101602001919091529392505050565b600060208083850312156147e257600080fd5b823567ffffffffffffffff808211156147fa57600080fd5b818501915085601f83011261480e57600080fd5b813561482161481c8261473b565b61470a565b81815260059190911b8301840190848101908883111561484057600080fd5b8585015b838110156148d95780358581111561485c5760008081fd5b86016080818c03601f19018113156148745760008081fd5b61487c6146be565b898301358881111561488e5760008081fd5b61489c8e8c8387010161475f565b8252506040808401358b83015260606148b68186016145fe565b828401526148c58486016145fe565b908301525085525050918601918601614844565b5098975050505050505050565b6000602082840312156148f857600080fd5b614401826145fe565b806040810183101561491257600080fd5b92915050565b6000806000806000806000610180888a03121561493457600080fd5b61493d886145fe565b965061494b602089016145fe565b955060408801359450606088013593506149688960808a01614901565b925061014088018981111561497c57600080fd5b60c08901925061498c8a82614901565b91505092959891949750929550565b600080600080600060a086880312156149b357600080fd5b85359450602086013567ffffffffffffffff8111156149d157600080fd5b6149dd8882890161475f565b945050604086013592506149f3606087016145fe565b91506080860135614a0381614645565b809150509295509295909350565b60008060008060808587031215614a2757600080fd5b614a30856145fe565b9350614a3e602086016145fe565b93969395505050506040820135916060013590565b8015158114613e1057600080fd5b803561461681614a53565b60008060008060008060008060008060006101608c8e031215614a8e57600080fd5b614a978c614667565b9a50614aa560208d01614667565b9950614ab360408d01614667565b985060608c01359750614ac860808d01614667565b9650614ad660a08d01614a61565b955067ffffffffffffffff8060c08e01351115614af257600080fd5b614b028e60c08f01358f0161475f565b9550614b1060e08e016145fe565b9450806101008e01351115614b2457600080fd5b50614b368d6101008e01358e0161475f565b9250614b456101208d01614667565b9150614b546101408d01614667565b90509295989b509295989b9093969950565b600060208284031215614b7857600080fd5b813561440181614a53565b600060208284031215614b9557600080fd5b813567ffffffffffffffff811115614bac57600080fd5b614bb88482850161475f565b949350505050565b60006020808385031215614bd357600080fd5b823567ffffffffffffffff80821115614beb57600080fd5b818501915085601f830112614bff57600080fd5b8135614c0d61481c8261473b565b81815260059190911b83018401908481019088831115614c2c57600080fd5b8585015b838110156148d957803585811115614c485760008081fd5b86016060818c03601f1901811315614c605760008081fd5b614c686146e7565b8983013588811115614c7a5760008081fd5b614c888e8c8387010161475f565b8252506040808401358b830152614ca08385016145fe565b9082015285525050918601918601614c30565b60008060408385031215614cc657600080fd5b823567ffffffffffffffff811115614cdd57600080fd5b614ce98582860161475f565b95602094909401359450505050565b60008060408385031215614d0b57600080fd5b82359150614d1b602084016145fe565b90509250929050565b600181811c90821680614d3857607f821691505b602082108103614d71577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600067ffffffffffffffff808316818103614df257614df2614da6565b6001019392505050565b600060208284031215614e0e57600080fd5b5051919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203614e4657614e46614da6565b5060010190565b600067ffffffffffffffff83811690831681811015614e6e57614e6e614da6565b039392505050565b600082821015614e8857614e88614da6565b500390565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614ec557614ec5614da6565b500290565b60008251614edc818460208701614593565b9190910192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600082614f2457614f24614ee6565b500690565b61012081016040808784376000838201818152879190815b6002811015614f6157848483379084018281529284019290600101614f41565b5050828760c0870137610100850181815286935091505b6001811015614f97578251825260209283019290910190600101614f78565b50505095945050505050565b600060208284031215614fb557600080fd5b815161440181614a53565b600067ffffffffffffffff808316818516808303821115614fe357614fe3614da6565b01949350505050565b601f82111561403b57600081815260208120601f850160051c810160208610156150135750805b601f850160051c820191505b818110156150325782815560010161501f565b505050505050565b815167ffffffffffffffff8111156150545761505461468f565b615068816150628454614d24565b84614fec565b602080601f8311600181146150bb57600084156150855750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b178555615032565b600085815260208120601f198616915b828110156150ea578886015182559484019460019091019084016150cb565b508582101561512657878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b60008261514557615145614ee6565b500490565b6000821982111561515d5761515d614da6565b500190565b83815273ffffffffffffffffffffffffffffffffffffffff8316602082015260606040820152600061519760608301846145bf565b9594505050505056fea26469706673582212208552e321306e2f9188d5ca8e7c86580615c0151b5d2e9c81b876214ae57ff2bc64736f6c634300080f0033", - "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061032b5760003560e01c80638c4a0af7116101b2578063c89e42df116100f9578063dbc16976116100a2578063eaeb077b1161007c578063eaeb077b14610810578063f2fde38b14610823578063f755276114610836578063fe16564f1461084557600080fd5b8063dbc16976146107b8578063e7a7ed02146107c0578063e8bf92ed146107f057600080fd5b8063d0ae98dd116100d3578063d0ae98dd14610765578063d8d1091b14610778578063d8f54db01461078b57600080fd5b8063c89e42df14610706578063cfa8ed4714610719578063d02103ca1461074557600080fd5b8063ab9fc5ef1161015b578063b4d63f5811610135578063b4d63f58146106ae578063b6b0b097146106ce578063c0cad302146106f357600080fd5b8063ab9fc5ef14610687578063adc879e914610691578063b02286c0146106a557600080fd5b806399f5634e1161018c57806399f5634e1461064c5780639b79676014610654578063a3c573eb1461066757600080fd5b80638c4a0af7146106085780638da5cb5b1461061b57806396dc3d391461063957600080fd5b80635437988d11610276578063715018a61161021f57806379847057116101f957806379847057146105d95780637fcb3653146105e157806381df7d3f146105f557600080fd5b8063715018a6146105ab5780637152facf146105b3578063748608de146105c657600080fd5b80636766f09d116102505780636766f09d146105655780636b8616ce146105785780636ff512cc1461059857600080fd5b80635437988d1461049e57806355b925e6146104b1578063574f649e146104c457600080fd5b806327eb6c0f116102d857806345605267116102b257806345605267146104405780635392c5e014610468578063542028d51461049657600080fd5b806327eb6c0f146103c85780633c1582671461040d578063423fa8561461042057600080fd5b80631a26da14116103095780631a26da14146103985780631c1083e2146103ad5780632072f6c5146103c057600080fd5b8063107bf28c1461033057806315064c961461034e57806319d8ac611461036b575b600080fd5b610338610858565b60405161034591906145eb565b60405180910390f35b60655461035b9060ff1681565b6040519015158152602001610345565b60685461037f9067ffffffffffffffff1681565b60405167ffffffffffffffff9091168152602001610345565b6103ab6103a636600461461b565b6108e6565b005b6103ab6103bb366004614672565b61090b565b6103ab610a17565b6070546103e89073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610345565b6103ab61041b3660046147cf565b610ac8565b60685461037f9068010000000000000000900467ffffffffffffffff1681565b60685461037f90700100000000000000000000000000000000900467ffffffffffffffff1681565b6104886104763660046148e6565b606b6020526000908152604090205481565b604051908152602001610345565b6103386113bf565b6103ab6104ac366004614672565b6113cc565b6103ab6104bf366004614918565b61141b565b6104886104d236600461499b565b835160209485012060408051808701979097528681019190915260608087019490945260c09290921b7fffffffffffffffff00000000000000000000000000000000000000000000000016608086015290911b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001660888401528051808403607c018152609c9093019052815191012090565b6103ab610573366004614918565b6119e4565b6104886105863660046148e6565b60666020526000908152604090205481565b6103ab6105a6366004614672565b61202e565b6103ab612148565b6103386105c1366004614a11565b61215a565b6103ab6105d4366004614918565b612390565b6104886125f9565b60695461037f9067ffffffffffffffff1681565b6103ab610603366004614a6c565b612673565b6103ab610616366004614b66565b6129cc565b60335473ffffffffffffffffffffffffffffffffffffffff166103e8565b6103ab6106473660046148e6565b612ae6565b610488612b29565b6103ab6106623660046148e6565b612c5a565b6071546103e89073ffffffffffffffffffffffffffffffffffffffff1681565b61037f62093a8081565b606e5461037f9067ffffffffffffffff1681565b61048861ea6081565b6104886106bc3660046148e6565b60676020526000908152604090205481565b6065546103e890610100900473ffffffffffffffffffffffffffffffffffffffff1681565b6103ab610701366004614b83565b612ca9565b6103ab610714366004614b83565b612cc1565b6069546103e89068010000000000000000900473ffffffffffffffffffffffffffffffffffffffff1681565b606a546103e89073ffffffffffffffffffffffffffffffffffffffff1681565b610488610773366004614a11565b612d96565b6103ab610786366004614bc0565b613042565b60695461035b907c0100000000000000000000000000000000000000000000000000000000900460ff1681565b6103ab6136e7565b60685461037f907801000000000000000000000000000000000000000000000000900467ffffffffffffffff1681565b606c546103e89073ffffffffffffffffffffffffffffffffffffffff1681565b6103ab61081e366004614cb3565b613876565b6103ab610831366004614672565b613d76565b61048867016345785d8a000081565b6103ab610853366004614cf8565b613e13565b606f805461086590614d24565b80601f016020809104026020016040519081016040528092919081815260200182805461089190614d24565b80156108de5780601f106108b3576101008083540402835291602001916108de565b820191906000526020600020905b8154815290600101906020018083116108c157829003601f168201915b505050505081565b6108ee613e36565b67ffffffffffffffff909116600090815260676020526040902055565b60705473ffffffffffffffffffffffffffffffffffffffff16331461099d5760405162461bcd60e51b815260206004820152603d60248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7953656375726974794360448201527f6f756e63696c3a206f6e6c7920736563757269747920636f756e63696c00000060648201526084015b60405180910390fd5b607080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f373a9d1d60f01a33ff86d540991f09f5c5d7482656794de80be077c5eb9693d9906020015b60405180910390a150565b60655460ff1615610ab65760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a401610994565b610abe613e36565b610ac6613e9d565b565b60655460ff1615610b675760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a401610994565b60695468010000000000000000900473ffffffffffffffffffffffffffffffffffffffff163314610c005760405162461bcd60e51b815260206004820152603f60248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7954727573746564536560448201527f7175656e6365723a206f6e6c7920747275737465642073657175656e636572006064820152608401610994565b805160685467ffffffffffffffff680100000000000000008204811660008181526067602052604081205483851694929370010000000000000000000000000000000090930490921691905b858110156111b0576000878281518110610c6857610c68614d77565b602002602001015190506000816060015167ffffffffffffffff161115610e815783610c9381614dd5565b945050600081600001518051906020012082602001518360600151604051602001610cf693929190928352602083019190915260c01b7fffffffffffffffff00000000000000000000000000000000000000000000000016604082015260480190565b60408051601f19818403018152918152815160209283012067ffffffffffffffff8816600090815260669093529120549091508114610dc35760405162461bcd60e51b815260206004820152604260248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365426174636860448201527f65733a20466f7263656420626174636865732064617461206d757374206d617460648201527f6368000000000000000000000000000000000000000000000000000000000000608482015260a401610994565b816060015167ffffffffffffffff16826040015167ffffffffffffffff161015610e7b5760405162461bcd60e51b815260206004820152605d60248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365426174636860448201527f65733a20466f7263656420626174636865732074696d657374616d70206d757360648201527f7420626520626967676572206f7220657175616c207468616e206d696e000000608482015260a401610994565b5061101b565b60208101511580610f305750606a5460208201516040517f257b363200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9092169163257b363291610eea9160040190815260200190565b6020604051808303816000875af1158015610f09573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f2d9190614dfc565b15155b610fa25760405162461bcd60e51b815260206004820152603f60248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365426174636860448201527f65733a20476c6f62616c206578697420726f6f74206d757374206578697374006064820152608401610994565b80515161ea601161101b5760405162461bcd60e51b815260206004820152603f60248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365426174636860448201527f65733a205472616e73616374696f6e73206279746573206f766572666c6f77006064820152608401610994565b8567ffffffffffffffff16816040015167ffffffffffffffff1610158015611051575042816040015167ffffffffffffffff1611155b6110e95760405162461bcd60e51b815260206004820152604260248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365426174636860448201527f65733a2054696d657374616d70206d75737420626520696e736964652072616e60648201527f6765000000000000000000000000000000000000000000000000000000000000608482015260a401610994565b805180516020918201208183015160408085015181519485018890529084019290925260608084019190915260c09190911b7fffffffffffffffff00000000000000000000000000000000000000000000000016608083015233901b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166088820152609c01604051602081830303815290604052805190602001209250848061119290614dd5565b955050806040015195505080806111a890614e15565b915050610c4c565b5060685467ffffffffffffffff7801000000000000000000000000000000000000000000000000909104811690831611156112535760405162461bcd60e51b815260206004820152603a60248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365426174636860448201527f65733a20466f7263652062617463686573206f766572666c6f770000000000006064820152608401610994565b60685460009061128190700100000000000000000000000000000000900467ffffffffffffffff1684614e4d565b6112959067ffffffffffffffff1687614e76565b6068805467ffffffffffffffff868116700100000000000000000000000000000000027fffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff8983166801000000000000000081027fffffffffffffffffffffffffffffffff00000000000000000000000000000000909516938c169390931793909317929092169190911790915560009081526067602052604090208390559050611372333061134c8467016345785d8a0000614e8d565b606554610100900473ffffffffffffffffffffffffffffffffffffffff16929190613f27565b6068546040516801000000000000000090910467ffffffffffffffff16907f303446e6a8cb73c83dff421c0b1d5e5ce0719dab1bff13660fc254e58cc17fce90600090a250505050505050565b606d805461086590614d24565b6113d4613e36565b606c80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60655460ff16156114ba5760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a401610994565b60695467ffffffffffffffff90811690881611156115665760405162461bcd60e51b815260206004820152605b60248201527f50726f6f664f66456666696369656e63793a3a7665726966794261746368657360448201527f3a20696e69744e756d4261746368206d757374206265206c657373206f72206560648201527f7175616c207468616e206c617374566572696669656442617463680000000000608482015260a401610994565b60695467ffffffffffffffff908116908716116116115760405162461bcd60e51b815260206004820152605560248201527f50726f6f664f66456666696369656e63793a3a7665726966794261746368657360448201527f3a2066696e616c4e65774261746368206d75737420626520626967676572207460648201527f68616e206c617374566572696669656442617463680000000000000000000000608482015260a401610994565b67ffffffffffffffff87166000908152606b60205260409020546116c35760405162461bcd60e51b815260206004820152604860248201527f50726f6f664f66456666696369656e63793a3a7665726966794261746368657360448201527f3a20696e69744e756d426174636820737461746520726f6f7420646f6573206e60648201527f6f74206578697374000000000000000000000000000000000000000000000000608482015260a401610994565b60006116d18888888861215a565b905060007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000016002836040516117069190614eca565b602060405180830381855afa158015611723573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906117469190614dfc565b6117509190614f15565b606c546040805160208101825283815290517f43753b4d00000000000000000000000000000000000000000000000000000000815292935073ffffffffffffffffffffffffffffffffffffffff909116916343753b4d916117ba9189918991899190600401614f29565b602060405180830381865afa1580156117d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117fb9190614fa3565b61186d5760405162461bcd60e51b815260206004820152602f60248201527f50726f6f664f66456666696369656e63793a3a7665726966794261746368657360448201527f3a20494e56414c49445f50524f4f4600000000000000000000000000000000006064820152608401610994565b6069546118cb90339061188a9067ffffffffffffffff168b614e4d565b67ffffffffffffffff1661189c612b29565b6118a69190614e8d565b606554610100900473ffffffffffffffffffffffffffffffffffffffff169190613fe5565b606980547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff8a169081179091556000908152606b602052604090819020879055606a5490517f33d6247d0000000000000000000000000000000000000000000000000000000081526004810189905273ffffffffffffffffffffffffffffffffffffffff909116906333d6247d90602401600060405180830381600087803b15801561198057600080fd5b505af1158015611994573d6000803e3d6000fd5b505060405188815233925067ffffffffffffffff8b1691507f9c72852172521097ba7e1482e6b44b351323df0155f97f4ea18fcec28e1f59669060200160405180910390a3505050505050505050565b60655460ff1615611a835760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a401610994565b8567ffffffffffffffff168767ffffffffffffffff1610611b325760405162461bcd60e51b815260206004820152605660248201527f50726f6f664f66456666696369656e63793a3a70726f6f66446966666572656e60448201527f7453746174653a2066696e616c4e65774261746368206d75737420626520626960648201527f67676572207468616e20696e69744e756d426174636800000000000000000000608482015260a401610994565b60695467ffffffffffffffff9081169087161115611c045760405162461bcd60e51b815260206004820152606260248201527f50726f6f664f66456666696369656e63793a3a70726f6f66446966666572656e60448201527f7453746174653a2066696e616c4e65774261746368206d757374206265206c6560648201527f7373206f7220657175616c207468616e206c617374566572696669656442617460848201527f636800000000000000000000000000000000000000000000000000000000000060a482015260c401610994565b67ffffffffffffffff87166000908152606b6020526040902054611cb65760405162461bcd60e51b815260206004820152604e60248201527f50726f6f664f66456666696369656e63793a3a70726f6f66446966666572656e60448201527f7453746174653a20696e69744e756d426174636820737461746520726f6f742060648201527f646f6573206e6f74206578697374000000000000000000000000000000000000608482015260a401610994565b67ffffffffffffffff86166000908152606b6020526040902054611d685760405162461bcd60e51b815260206004820152604f60248201527f50726f6f664f66456666696369656e63793a3a70726f6f66446966666572656e60448201527f7453746174653a2066696e616c4e6577426174636820737461746520726f6f7460648201527f20646f6573206e6f742065786973740000000000000000000000000000000000608482015260a401610994565b6000611d768888888861215a565b905060007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001600283604051611dab9190614eca565b602060405180830381855afa158015611dc8573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190611deb9190614dfc565b611df59190614f15565b606c546040805160208101825283815290517f43753b4d00000000000000000000000000000000000000000000000000000000815292935073ffffffffffffffffffffffffffffffffffffffff909116916343753b4d91611e5f9189918991899190600401614f29565b602060405180830381865afa158015611e7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ea09190614fa3565b611f125760405162461bcd60e51b815260206004820152603560248201527f50726f6f664f66456666696369656e63793a3a70726f6f66446966666572656e60448201527f7453746174653a20494e56414c49445f50524f4f4600000000000000000000006064820152608401610994565b67ffffffffffffffff88166000908152606b6020526040902054869003611fc75760405162461bcd60e51b815260206004820152605960248201527f50726f6f664f66456666696369656e63793a3a70726f6f66446966666572656e60448201527f7453746174653a2073746f72656420726f6f74206d757374206265206469666660648201527f6572656e74207468616e206e657720737461746520726f6f7400000000000000608482015260a401610994565b67ffffffffffffffff88166000908152606b60209081526040918290205482519081529081018890527fe579d6d18f02941e1d0f59bff70f1b2c894edc991badab38343786df2846fe55910160405180910390a1612023613e9d565b505050505050505050565b60695468010000000000000000900473ffffffffffffffffffffffffffffffffffffffff1633146120c75760405162461bcd60e51b815260206004820152603f60248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7954727573746564536560448201527f7175656e6365723a206f6e6c7920747275737465642073657175656e636572006064820152608401610994565b606980547fffffffff0000000000000000000000000000000000000000ffffffffffffffff166801000000000000000073ffffffffffffffffffffffffffffffffffffffff8416908102919091179091556040519081527ff54144f9611984021529f814a1cb6a41e22c58351510a0d9f7e822618abb9cc090602001610a0c565b612150613e36565b610ac66000614040565b67ffffffffffffffff80851660008181526067602052604080822054938716825290205460609291158061218d57508115155b6122255760405162461bcd60e51b815260206004820152604560248201527f50726f6f664f66456666696369656e63793a3a676574496e707574536e61726b60448201527f42797465733a206f6c64416363496e7075744861736820646f6573206e6f742060648201527f6578697374000000000000000000000000000000000000000000000000000000608482015260a401610994565b806122be5760405162461bcd60e51b815260206004820152604560248201527f50726f6f664f66456666696369656e63793a3a676574496e707574536e61726b60448201527f42797465733a206e6577416363496e7075744861736820646f6573206e6f742060648201527f6578697374000000000000000000000000000000000000000000000000000000608482015260a401610994565b67ffffffffffffffff87166000908152606b602090815260409182902054606e5492517fffffffffffffffffffffffffffffffffffffffff0000000000000000000000003360601b16928101929092526034820152605481018490527fffffffffffffffff00000000000000000000000000000000000000000000000060c08a811b8216607484015292831b8116607c8301526084820187905260a4820184905260c482018890529188901b90911660e482015260ec0160405160208183030381529060405292505050949350505050565b612398613e36565b60695467ffffffffffffffff90811690881611156124445760405162461bcd60e51b815260206004820152604a60248201527f50726f6f664f66456666696369656e63793a3a7665726966794261746368657360448201527f3a205f6c61737456657269666965644261746368206d757374206265206c657360648201527f73206f7220657175616c00000000000000000000000000000000000000000000608482015260a401610994565b60695467ffffffffffffffff908116908716116124ef5760405162461bcd60e51b815260206004820152605860248201527f50726f6f664f66456666696369656e63793a3a7665726966794261746368657360448201527f3a206e657756657269666965644261746368206d75737420626520626967676560648201527f72207468616e206c617374566572696669656442617463680000000000000000608482015260a401610994565b67ffffffffffffffff808816600090815260676020526040808220549289168252902054816125865760405162461bcd60e51b815260206004820152603e60248201527f50726f6f664f66456666696369656e63793a3a76657269667942617463683a2060448201527f6f6c64416363496e7075744861736820646f6573206e6f7420657869737400006064820152608401610994565b806118cb5760405162461bcd60e51b815260206004820152603e60248201527f50726f6f664f66456666696369656e63793a3a76657269667942617463683a2060448201527f6e6577416363496e7075744861736820646f6573206e6f7420657869737400006064820152608401610994565b60685460009067ffffffffffffffff7001000000000000000000000000000000008204811691612648917801000000000000000000000000000000000000000000000000909104166001614fc0565b6126529190614e4d565b61266e9067ffffffffffffffff16670de0b6b3a7640000614e8d565b905090565b600054610100900460ff16158080156126935750600054600160ff909116105b806126ad5750303b1580156126ad575060005460ff166001145b61271f5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610994565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561277d57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b606a80547fffffffffffffffffffffffff000000000000000000000000000000000000000090811673ffffffffffffffffffffffffffffffffffffffff8f811691909117909255606580547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101008f851602179055606c80549091168c831617905560008052606b6020527fc8cc8bda7ad4886bea3ebbdafa02e79d37c39bf4011696b26a31a0802fd9458b8a9055606980547fffffff000000000000000000000000000000000000000000ffffffffffffffff1668010000000000000000928b16929092027fffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff16919091177c010000000000000000000000000000000000000000000000000000000089151502179055606d6128bc878261503a565b50606e80547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff8716179055606f6128fd858261503a565b506071805473ffffffffffffffffffffffffffffffffffffffff8086167fffffffffffffffffffffffff000000000000000000000000000000000000000092831617909255607080549285169290911691909117905561295b6140b7565b80156129be57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050505050565b60695468010000000000000000900473ffffffffffffffffffffffffffffffffffffffff163314612a655760405162461bcd60e51b815260206004820152603f60248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7954727573746564536560448201527f7175656e6365723a206f6e6c7920747275737465642073657175656e636572006064820152608401610994565b606980548215157c0100000000000000000000000000000000000000000000000000000000027fffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff9091161790556040517fbacda50a4a8575be1d91a7ebe29ee45056f3a94f12a2281eb6b43afa33bcefe690610a0c90831515815260200190565b612aee613e36565b606980547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff92909216919091179055565b6065546040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152600091829161010090910473ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa158015612ba0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bc49190614dfc565b60695460685491925060009167ffffffffffffffff91821691680100000000000000008204811691612c299170010000000000000000000000000000000082048116917801000000000000000000000000000000000000000000000000900416614e4d565b612c339190614fc0565b612c3d9190614e4d565b67ffffffffffffffff169050612c538183615136565b9250505090565b612c62613e36565b6068805467ffffffffffffffff90921668010000000000000000027fffffffffffffffffffffffffffffffff0000000000000000ffffffffffffffff909216919091179055565b612cb1613e36565b606f612cbd828261503a565b5050565b60695468010000000000000000900473ffffffffffffffffffffffffffffffffffffffff163314612d5a5760405162461bcd60e51b815260206004820152603f60248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7954727573746564536560448201527f7175656e6365723a206f6e6c7920747275737465642073657175656e636572006064820152608401610994565b606d612d66828261503a565b507f6b8f723a4c7a5335cafae8a598a0aa0301be1387c037dccc085b62add6448b2081604051610a0c91906145eb565b60695460009067ffffffffffffffff868116911614612e435760405162461bcd60e51b815260206004820152604160248201527f50726f6f664f66456666696369656e63793a3a76657269667942617463683a2060448201527f5f6c6173745665726966696564426174636820646f6573206e6f74206d61746360648201527f6800000000000000000000000000000000000000000000000000000000000000608482015260a401610994565b8467ffffffffffffffff168467ffffffffffffffff1611612ef25760405162461bcd60e51b815260206004820152605660248201527f50726f6f664f66456666696369656e63793a3a76657269667942617463683a2060448201527f6e657756657269666965644261746368206d757374206265206269676765722060648201527f7468616e206c6173745665726966696564426174636800000000000000000000608482015260a401610994565b60685467ffffffffffffffff6801000000000000000090910481169085161115612faa5760405162461bcd60e51b815260206004820152604260248201527f50726f6f664f66456666696369656e63793a3a76657269667942617463683a2060448201527f626174636820646f6573206e6f742068617665206265656e2073657175656e6360648201527f6564000000000000000000000000000000000000000000000000000000000000608482015260a401610994565b6000612fb88686868661215a565b905060007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001600283604051612fed9190614eca565b602060405180830381855afa15801561300a573d6000803e3d6000fd5b5050506040513d601f19601f8201168201806040525081019061302d9190614dfc565b6130379190614f15565b979650505050505050565b60655460ff16156130e15760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a401610994565b6069547c0100000000000000000000000000000000000000000000000000000000900460ff1615156001146131a45760405162461bcd60e51b815260206004820152604860248201527f50726f6f664f66456666696369656e63793a3a6973466f72636542617463684160448201527f6c6c6f7765643a206f6e6c7920696620666f726365206261746368206973206160648201527f7661696c61626c65000000000000000000000000000000000000000000000000608482015260a401610994565b80518061323f5760405162461bcd60e51b815260206004820152604260248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365466f72636560448201527f42617463683a204d75737420666f726365206174206c6561737420312062617460648201527f6368000000000000000000000000000000000000000000000000000000000000608482015260a401610994565b60685467ffffffffffffffff7801000000000000000000000000000000000000000000000000820481169161328a91849170010000000000000000000000000000000090041661514a565b11156132fe5760405162461bcd60e51b815260206004820152603a60248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365466f72636560448201527f42617463683a20466f72636520626174636820696e76616c69640000000000006064820152608401610994565b60685467ffffffffffffffff680100000000000000008204811660008181526067602052604081205491937001000000000000000000000000000000009004909216915b8481101561361757600086828151811061335e5761335e614d77565b60200260200101519050838061337390614dd5565b825180516020918201208185015160408087015181519485019390935283015260c01b7fffffffffffffffff0000000000000000000000000000000000000000000000001660608201529095506000915060680160408051601f19818403018152918152815160209283012067ffffffffffffffff88166000908152606690935291205490915081146134945760405162461bcd60e51b815260206004820152604760248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365466f72636560448201527f426174636865733a20466f7263656420626174636865732064617461206d757360648201527f74206d6174636800000000000000000000000000000000000000000000000000608482015260a401610994565b61349f600188614e76565b830361355d574262093a8083604001516134b99190614fc0565b67ffffffffffffffff16111561355d5760405162461bcd60e51b815260206004820152604c60248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365466f72636560448201527f42617463683a20466f72636564206261746368206973206e6f7420696e20746960648201527f6d656f757420706572696f640000000000000000000000000000000000000000608482015260a401610994565b8151805160209182012081840151604080519384018890528301919091526060808301919091524260c01b7fffffffffffffffff00000000000000000000000000000000000000000000000016608083015233901b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166088820152609c0160405160208183030381529060405280519060200120935085806135ff90614dd5565b9650505050808061360f90614e15565b915050613342565b50606880544267ffffffffffffffff9081167fffffffffffffffffffffffffffffffff000000000000000000000000000000009092169190911768010000000000000000868316818102929092177fffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff1670010000000000000000000000000000000087851602178455600091825260676020526040808320869055935493519304909116917f648a61dd2438f072f5a1960939abd30f37aea80d2e94c9792ad142d3e0a490a49190a25050505050565b60655460ff1661375f5760405162461bcd60e51b815260206004820152603b60248201527f456d657267656e63794d616e616765723a3a6966456d657267656e637953746160448201527f74653a206f6e6c7920696620656d657267656e637920737461746500000000006064820152608401610994565b60705473ffffffffffffffffffffffffffffffffffffffff1633146137ec5760405162461bcd60e51b815260206004820152603d60248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7953656375726974794360448201527f6f756e63696c3a206f6e6c7920736563757269747920636f756e63696c0000006064820152608401610994565b607160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dbc169766040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561385657600080fd5b505af115801561386a573d6000803e3d6000fd5b50505050610ac661413d565b60655460ff16156139155760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a401610994565b6069547c0100000000000000000000000000000000000000000000000000000000900460ff1615156001146139d85760405162461bcd60e51b815260206004820152604860248201527f50726f6f664f66456666696369656e63793a3a6973466f72636542617463684160448201527f6c6c6f7765643a206f6e6c7920696620666f726365206261746368206973206160648201527f7661696c61626c65000000000000000000000000000000000000000000000000608482015260a401610994565b60006139e26125f9565b905081811115613a5a5760405162461bcd60e51b815260206004820152602f60248201527f50726f6f664f66456666696369656e63793a3a666f72636542617463683a206e60448201527f6f7420656e6f756768206d6174696300000000000000000000000000000000006064820152608401610994565b61ea60835110613ad25760405162461bcd60e51b815260206004820152603a60248201527f50726f6f664f66456666696369656e63793a3a666f72636542617463683a205460448201527f72616e73616374696f6e73206279746573206f766572666c6f770000000000006064820152608401610994565b606554613afc90610100900473ffffffffffffffffffffffffffffffffffffffff16333084613f27565b606a54604080517f3ed691ef000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff1691633ed691ef9160048083019260209291908290030181865afa158015613b6c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b909190614dfc565b60688054919250780100000000000000000000000000000000000000000000000090910467ffffffffffffffff16906018613bca83614dd5565b91906101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505083805190602001208142604051602001613c4393929190928352602083019190915260c01b7fffffffffffffffff00000000000000000000000000000000000000000000000016604082015260480190565b60408051808303601f1901815291815281516020928301206068547801000000000000000000000000000000000000000000000000900467ffffffffffffffff1660009081526066909352912055323303613d1357606854604080518381523360208201526060918101829052600091810191909152780100000000000000000000000000000000000000000000000090910467ffffffffffffffff16907ff94bb37db835f1ab585ee00041849a09b12cd081d77fa15ca070757619cbc9319060800160405180910390a2613d70565b606860189054906101000a900467ffffffffffffffff1667ffffffffffffffff167ff94bb37db835f1ab585ee00041849a09b12cd081d77fa15ca070757619cbc931823387604051613d6793929190615162565b60405180910390a25b50505050565b613d7e613e36565b73ffffffffffffffffffffffffffffffffffffffff8116613e075760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610994565b613e1081614040565b50565b613e1b613e36565b67ffffffffffffffff166000908152606b6020526040902055565b60335473ffffffffffffffffffffffffffffffffffffffff163314610ac65760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610994565b607160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632072f6c56040518163ffffffff1660e01b8152600401600060405180830381600087803b158015613f0757600080fd5b505af1158015613f1b573d6000803e3d6000fd5b50505050610ac6614208565b60405173ffffffffffffffffffffffffffffffffffffffff80851660248301528316604482015260648101829052613d709085907f23b872dd00000000000000000000000000000000000000000000000000000000906084015b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526142fd565b60405173ffffffffffffffffffffffffffffffffffffffff831660248201526044810182905261403b9084907fa9059cbb0000000000000000000000000000000000000000000000000000000090606401613f81565b505050565b6033805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff166141345760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610994565b610ac633614040565b60655460ff166141b55760405162461bcd60e51b815260206004820152603b60248201527f456d657267656e63794d616e616765723a3a6966456d657267656e637953746160448201527f74653a206f6e6c7920696620656d657267656e637920737461746500000000006064820152608401610994565b606580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690556040517f1e5e34eea33501aecf2ebec9fe0e884a40804275ea7fe10b2ba084c8374308b390600090a1565b60655460ff16156142a75760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a401610994565b606580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556040517f2261efe5aef6fedc1fd1550b25facc9181745623049c7901287030b9ad1a549790600090a1565b600061435f826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166143ef9092919063ffffffff16565b80519091501561403b578080602001905181019061437d9190614fa3565b61403b5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610994565b60606143fe8484600085614408565b90505b9392505050565b6060824710156144805760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610994565b73ffffffffffffffffffffffffffffffffffffffff85163b6144e45760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610994565b6000808673ffffffffffffffffffffffffffffffffffffffff16858760405161450d9190614eca565b60006040518083038185875af1925050503d806000811461454a576040519150601f19603f3d011682016040523d82523d6000602084013e61454f565b606091505b509150915061303782828660608315614569575081614401565b8251156145795782518084602001fd5b8160405162461bcd60e51b815260040161099491906145eb565b60005b838110156145ae578181015183820152602001614596565b83811115613d705750506000910152565b600081518084526145d7816020860160208601614593565b601f01601f19169290920160200192915050565b60208152600061440160208301846145bf565b803567ffffffffffffffff8116811461461657600080fd5b919050565b6000806040838503121561462e57600080fd5b614637836145fe565b946020939093013593505050565b73ffffffffffffffffffffffffffffffffffffffff81168114613e1057600080fd5b803561461681614645565b60006020828403121561468457600080fd5b813561440181614645565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516080810167ffffffffffffffff811182821017156146e1576146e161468f565b60405290565b6040516060810167ffffffffffffffff811182821017156146e1576146e161468f565b604051601f8201601f1916810167ffffffffffffffff811182821017156147335761473361468f565b604052919050565b600067ffffffffffffffff8211156147555761475561468f565b5060051b60200190565b600082601f83011261477057600080fd5b813567ffffffffffffffff81111561478a5761478a61468f565b61479d6020601f19601f8401160161470a565b8181528460208386010111156147b257600080fd5b816020850160208301376000918101602001919091529392505050565b600060208083850312156147e257600080fd5b823567ffffffffffffffff808211156147fa57600080fd5b818501915085601f83011261480e57600080fd5b813561482161481c8261473b565b61470a565b81815260059190911b8301840190848101908883111561484057600080fd5b8585015b838110156148d95780358581111561485c5760008081fd5b86016080818c03601f19018113156148745760008081fd5b61487c6146be565b898301358881111561488e5760008081fd5b61489c8e8c8387010161475f565b8252506040808401358b83015260606148b68186016145fe565b828401526148c58486016145fe565b908301525085525050918601918601614844565b5098975050505050505050565b6000602082840312156148f857600080fd5b614401826145fe565b806040810183101561491257600080fd5b92915050565b6000806000806000806000610180888a03121561493457600080fd5b61493d886145fe565b965061494b602089016145fe565b955060408801359450606088013593506149688960808a01614901565b925061014088018981111561497c57600080fd5b60c08901925061498c8a82614901565b91505092959891949750929550565b600080600080600060a086880312156149b357600080fd5b85359450602086013567ffffffffffffffff8111156149d157600080fd5b6149dd8882890161475f565b945050604086013592506149f3606087016145fe565b91506080860135614a0381614645565b809150509295509295909350565b60008060008060808587031215614a2757600080fd5b614a30856145fe565b9350614a3e602086016145fe565b93969395505050506040820135916060013590565b8015158114613e1057600080fd5b803561461681614a53565b60008060008060008060008060008060006101608c8e031215614a8e57600080fd5b614a978c614667565b9a50614aa560208d01614667565b9950614ab360408d01614667565b985060608c01359750614ac860808d01614667565b9650614ad660a08d01614a61565b955067ffffffffffffffff8060c08e01351115614af257600080fd5b614b028e60c08f01358f0161475f565b9550614b1060e08e016145fe565b9450806101008e01351115614b2457600080fd5b50614b368d6101008e01358e0161475f565b9250614b456101208d01614667565b9150614b546101408d01614667565b90509295989b509295989b9093969950565b600060208284031215614b7857600080fd5b813561440181614a53565b600060208284031215614b9557600080fd5b813567ffffffffffffffff811115614bac57600080fd5b614bb88482850161475f565b949350505050565b60006020808385031215614bd357600080fd5b823567ffffffffffffffff80821115614beb57600080fd5b818501915085601f830112614bff57600080fd5b8135614c0d61481c8261473b565b81815260059190911b83018401908481019088831115614c2c57600080fd5b8585015b838110156148d957803585811115614c485760008081fd5b86016060818c03601f1901811315614c605760008081fd5b614c686146e7565b8983013588811115614c7a5760008081fd5b614c888e8c8387010161475f565b8252506040808401358b830152614ca08385016145fe565b9082015285525050918601918601614c30565b60008060408385031215614cc657600080fd5b823567ffffffffffffffff811115614cdd57600080fd5b614ce98582860161475f565b95602094909401359450505050565b60008060408385031215614d0b57600080fd5b82359150614d1b602084016145fe565b90509250929050565b600181811c90821680614d3857607f821691505b602082108103614d71577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600067ffffffffffffffff808316818103614df257614df2614da6565b6001019392505050565b600060208284031215614e0e57600080fd5b5051919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203614e4657614e46614da6565b5060010190565b600067ffffffffffffffff83811690831681811015614e6e57614e6e614da6565b039392505050565b600082821015614e8857614e88614da6565b500390565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614ec557614ec5614da6565b500290565b60008251614edc818460208701614593565b9190910192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600082614f2457614f24614ee6565b500690565b61012081016040808784376000838201818152879190815b6002811015614f6157848483379084018281529284019290600101614f41565b5050828760c0870137610100850181815286935091505b6001811015614f97578251825260209283019290910190600101614f78565b50505095945050505050565b600060208284031215614fb557600080fd5b815161440181614a53565b600067ffffffffffffffff808316818516808303821115614fe357614fe3614da6565b01949350505050565b601f82111561403b57600081815260208120601f850160051c810160208610156150135750805b601f850160051c820191505b818110156150325782815560010161501f565b505050505050565b815167ffffffffffffffff8111156150545761505461468f565b615068816150628454614d24565b84614fec565b602080601f8311600181146150bb57600084156150855750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b178555615032565b600085815260208120601f198616915b828110156150ea578886015182559484019460019091019084016150cb565b508582101561512657878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b60008261514557615145614ee6565b500490565b6000821982111561515d5761515d614da6565b500190565b83815273ffffffffffffffffffffffffffffffffffffffff8316602082015260606040820152600061519760608301846145bf565b9594505050505056fea26469706673582212208552e321306e2f9188d5ca8e7c86580615c0151b5d2e9c81b876214ae57ff2bc64736f6c634300080f0033", + "bytecode": "0x608060405234801561001057600080fd5b506151f8806100206000396000f3fe608060405234801561001057600080fd5b506004361061032b5760003560e01c80638da5cb5b116101b2578063c89e42df116100f9578063dbc16976116100a2578063eaeb077b1161007c578063eaeb077b14610810578063f2fde38b14610823578063f755276114610836578063fe16564f1461084557600080fd5b8063dbc16976146107b8578063e7a7ed02146107c0578063e8bf92ed146107f057600080fd5b8063d0ae98dd116100d3578063d0ae98dd14610765578063d8d1091b14610778578063d8f54db01461078b57600080fd5b8063c89e42df14610706578063cfa8ed4714610719578063d02103ca1461074557600080fd5b8063adc879e91161015b578063b6b0b09711610135578063b6b0b097146106bb578063c0cad302146106e0578063c3fd0f9c146106f357600080fd5b8063adc879e91461067e578063b02286c014610692578063b4d63f581461069b57600080fd5b80639b7967601161018c5780639b79676014610641578063a3c573eb14610654578063ab9fc5ef1461067457600080fd5b80638da5cb5b1461060857806396dc3d391461062657806399f5634e1461063957600080fd5b80635437988d116102765780637152facf1161021f5780637fcb3653116101f95780637fcb3653146105ce57806381df7d3f146105e25780638c4a0af7146105f557600080fd5b80637152facf146105a0578063748608de146105b357806379847057146105c657600080fd5b80636b8616ce116102505780636b8616ce146105655780636ff512cc14610585578063715018a61461059857600080fd5b80635437988d1461049e57806355b925e6146104b1578063574f649e146104c457600080fd5b806327eb6c0f116102d857806345605267116102b257806345605267146104405780635392c5e014610468578063542028d51461049657600080fd5b806327eb6c0f146103c85780633c1582671461040d578063423fa8561461042057600080fd5b80631a26da14116103095780631a26da14146103985780631c1083e2146103ad5780632072f6c5146103c057600080fd5b8063107bf28c1461033057806315064c961461034e57806319d8ac611461036b575b600080fd5b610338610858565b604051610345919061460e565b60405180910390f35b60655461035b9060ff1681565b6040519015158152602001610345565b60685461037f9067ffffffffffffffff1681565b60405167ffffffffffffffff9091168152602001610345565b6103ab6103a6366004614645565b6108e6565b005b6103ab6103bb36600461469c565b61090b565b6103ab610a17565b6070546103e89073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610345565b6103ab61041b3660046147f9565b610ac8565b60685461037f9068010000000000000000900467ffffffffffffffff1681565b60685461037f90700100000000000000000000000000000000900467ffffffffffffffff1681565b610488610476366004614910565b606b6020526000908152604090205481565b604051908152602001610345565b610338611458565b6103ab6104ac36600461469c565b611465565b6103ab6104bf366004614942565b6114b4565b6104886104d23660046149c5565b835160209485012060408051808701979097528681019190915260608087019490945260c09290921b7fffffffffffffffff00000000000000000000000000000000000000000000000016608086015290911b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001660888401528051808403607c018152609c9093019052815191012090565b610488610573366004614910565b60666020526000908152604090205481565b6103ab61059336600461469c565b611a7d565b6103ab611b97565b6103386105ae366004614a3b565b611ba9565b6103ab6105c1366004614942565b611de0565b610488612049565b60695461037f9067ffffffffffffffff1681565b6103ab6105f0366004614a96565b6120c3565b6103ab610603366004614b90565b61241c565b60335473ffffffffffffffffffffffffffffffffffffffff166103e8565b6103ab610634366004614910565b612536565b610488612579565b6103ab61064f366004614910565b6126aa565b6071546103e89073ffffffffffffffffffffffffffffffffffffffff1681565b61037f62093a8081565b606e5461037f9067ffffffffffffffff1681565b61048861ea6081565b6104886106a9366004614910565b60676020526000908152604090205481565b6065546103e890610100900473ffffffffffffffffffffffffffffffffffffffff1681565b6103ab6106ee366004614bad565b6126f9565b6103ab610701366004614942565b612711565b6103ab610714366004614bad565b612d5b565b6069546103e89068010000000000000000900473ffffffffffffffffffffffffffffffffffffffff1681565b606a546103e89073ffffffffffffffffffffffffffffffffffffffff1681565b610488610773366004614a3b565b612e30565b6103ab610786366004614be2565b6130dc565b60695461035b907c0100000000000000000000000000000000000000000000000000000000900460ff1681565b6103ab613781565b60685461037f907801000000000000000000000000000000000000000000000000900467ffffffffffffffff1681565b606c546103e89073ffffffffffffffffffffffffffffffffffffffff1681565b6103ab61081e366004614cd5565b613910565b6103ab61083136600461469c565b613e10565b61048867016345785d8a000081565b6103ab610853366004614d1a565b613ead565b606f805461086590614d46565b80601f016020809104026020016040519081016040528092919081815260200182805461089190614d46565b80156108de5780601f106108b3576101008083540402835291602001916108de565b820191906000526020600020905b8154815290600101906020018083116108c157829003601f168201915b505050505081565b6108ee613ed0565b67ffffffffffffffff909116600090815260676020526040902055565b60705473ffffffffffffffffffffffffffffffffffffffff16331461099d5760405162461bcd60e51b815260206004820152603d60248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7953656375726974794360448201527f6f756e63696c3a206f6e6c7920736563757269747920636f756e63696c00000060648201526084015b60405180910390fd5b607080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f373a9d1d60f01a33ff86d540991f09f5c5d7482656794de80be077c5eb9693d9906020015b60405180910390a150565b60655460ff1615610ab65760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a401610994565b610abe613ed0565b610ac6613f37565b565b60655460ff1615610b675760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a401610994565b60695468010000000000000000900473ffffffffffffffffffffffffffffffffffffffff163314610c005760405162461bcd60e51b815260206004820152603f60248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7954727573746564536560448201527f7175656e6365723a206f6e6c7920747275737465642073657175656e636572006064820152608401610994565b805180610c9b5760405162461bcd60e51b815260206004820152604260248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365426174636860448201527f65733a204174206c65617374206d7573742073657175656e636520312062617460648201527f6368000000000000000000000000000000000000000000000000000000000000608482015260a401610994565b60685467ffffffffffffffff680100000000000000008204811660008181526067602052604081205483851694929370010000000000000000000000000000000090930490921691905b85811015611249576000878281518110610d0157610d01614d99565b602002602001015190506000816060015167ffffffffffffffff161115610f1a5783610d2c81614df7565b945050600081600001518051906020012082602001518360600151604051602001610d8f93929190928352602083019190915260c01b7fffffffffffffffff00000000000000000000000000000000000000000000000016604082015260480190565b60408051601f19818403018152918152815160209283012067ffffffffffffffff8816600090815260669093529120549091508114610e5c5760405162461bcd60e51b815260206004820152604260248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365426174636860448201527f65733a20466f7263656420626174636865732064617461206d757374206d617460648201527f6368000000000000000000000000000000000000000000000000000000000000608482015260a401610994565b816060015167ffffffffffffffff16826040015167ffffffffffffffff161015610f145760405162461bcd60e51b815260206004820152605d60248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365426174636860448201527f65733a20466f7263656420626174636865732074696d657374616d70206d757360648201527f7420626520626967676572206f7220657175616c207468616e206d696e000000608482015260a401610994565b506110b4565b60208101511580610fc95750606a5460208201516040517f257b363200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9092169163257b363291610f839160040190815260200190565b6020604051808303816000875af1158015610fa2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fc69190614e1e565b15155b61103b5760405162461bcd60e51b815260206004820152603f60248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365426174636860448201527f65733a20476c6f62616c206578697420726f6f74206d757374206578697374006064820152608401610994565b80515161ea60116110b45760405162461bcd60e51b815260206004820152603f60248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365426174636860448201527f65733a205472616e73616374696f6e73206279746573206f766572666c6f77006064820152608401610994565b8567ffffffffffffffff16816040015167ffffffffffffffff16101580156110ea575042816040015167ffffffffffffffff1611155b6111825760405162461bcd60e51b815260206004820152604260248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365426174636860448201527f65733a2054696d657374616d70206d75737420626520696e736964652072616e60648201527f6765000000000000000000000000000000000000000000000000000000000000608482015260a401610994565b805180516020918201208183015160408085015181519485018890529084019290925260608084019190915260c09190911b7fffffffffffffffff00000000000000000000000000000000000000000000000016608083015233901b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166088820152609c01604051602081830303815290604052805190602001209250848061122b90614df7565b9550508060400151955050808061124190614e37565b915050610ce5565b5060685467ffffffffffffffff7801000000000000000000000000000000000000000000000000909104811690831611156112ec5760405162461bcd60e51b815260206004820152603a60248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365426174636860448201527f65733a20466f7263652062617463686573206f766572666c6f770000000000006064820152608401610994565b60685460009061131a90700100000000000000000000000000000000900467ffffffffffffffff1684614e6f565b61132e9067ffffffffffffffff1687614e98565b6068805467ffffffffffffffff868116700100000000000000000000000000000000027fffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff8983166801000000000000000081027fffffffffffffffffffffffffffffffff00000000000000000000000000000000909516938c16939093179390931792909216919091179091556000908152606760205260409020839055905061140b33306113e58467016345785d8a0000614eaf565b606554610100900473ffffffffffffffffffffffffffffffffffffffff16929190613fc1565b6068546040516801000000000000000090910467ffffffffffffffff16907f303446e6a8cb73c83dff421c0b1d5e5ce0719dab1bff13660fc254e58cc17fce90600090a250505050505050565b606d805461086590614d46565b61146d613ed0565b606c80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60655460ff16156115535760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a401610994565b60695467ffffffffffffffff90811690881611156115ff5760405162461bcd60e51b815260206004820152605b60248201527f50726f6f664f66456666696369656e63793a3a7665726966794261746368657360448201527f3a20696e69744e756d4261746368206d757374206265206c657373206f72206560648201527f7175616c207468616e206c617374566572696669656442617463680000000000608482015260a401610994565b60695467ffffffffffffffff908116908716116116aa5760405162461bcd60e51b815260206004820152605560248201527f50726f6f664f66456666696369656e63793a3a7665726966794261746368657360448201527f3a2066696e616c4e65774261746368206d75737420626520626967676572207460648201527f68616e206c617374566572696669656442617463680000000000000000000000608482015260a401610994565b67ffffffffffffffff87166000908152606b602052604090205461175c5760405162461bcd60e51b815260206004820152604860248201527f50726f6f664f66456666696369656e63793a3a7665726966794261746368657360448201527f3a20696e69744e756d426174636820737461746520726f6f7420646f6573206e60648201527f6f74206578697374000000000000000000000000000000000000000000000000608482015260a401610994565b600061176a88888888611ba9565b905060007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000160028360405161179f9190614eec565b602060405180830381855afa1580156117bc573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906117df9190614e1e565b6117e99190614f37565b606c546040805160208101825283815290517f43753b4d00000000000000000000000000000000000000000000000000000000815292935073ffffffffffffffffffffffffffffffffffffffff909116916343753b4d916118539189918991899190600401614f4b565b602060405180830381865afa158015611870573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118949190614fc5565b6119065760405162461bcd60e51b815260206004820152602f60248201527f50726f6f664f66456666696369656e63793a3a7665726966794261746368657360448201527f3a20494e56414c49445f50524f4f4600000000000000000000000000000000006064820152608401610994565b6069546119649033906119239067ffffffffffffffff168b614e6f565b67ffffffffffffffff16611935612579565b61193f9190614eaf565b606554610100900473ffffffffffffffffffffffffffffffffffffffff16919061407f565b606980547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff8a169081179091556000908152606b602052604090819020879055606a5490517f33d6247d0000000000000000000000000000000000000000000000000000000081526004810189905273ffffffffffffffffffffffffffffffffffffffff909116906333d6247d90602401600060405180830381600087803b158015611a1957600080fd5b505af1158015611a2d573d6000803e3d6000fd5b505060405188815233925067ffffffffffffffff8b1691507f9c72852172521097ba7e1482e6b44b351323df0155f97f4ea18fcec28e1f59669060200160405180910390a3505050505050505050565b60695468010000000000000000900473ffffffffffffffffffffffffffffffffffffffff163314611b165760405162461bcd60e51b815260206004820152603f60248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7954727573746564536560448201527f7175656e6365723a206f6e6c7920747275737465642073657175656e636572006064820152608401610994565b606980547fffffffff0000000000000000000000000000000000000000ffffffffffffffff166801000000000000000073ffffffffffffffffffffffffffffffffffffffff8416908102919091179091556040519081527ff54144f9611984021529f814a1cb6a41e22c58351510a0d9f7e822618abb9cc090602001610a0c565b611b9f613ed0565b610ac660006140da565b67ffffffffffffffff808516600081815260676020526040808220549387168252902054606092911580611bdc57508115155b611c745760405162461bcd60e51b815260206004820152604560248201527f50726f6f664f66456666696369656e63793a3a676574496e707574536e61726b60448201527f42797465733a206f6c64416363496e7075744861736820646f6573206e6f742060648201527f6578697374000000000000000000000000000000000000000000000000000000608482015260a401610994565b80611d0d5760405162461bcd60e51b815260206004820152604560248201527f50726f6f664f66456666696369656e63793a3a676574496e707574536e61726b60448201527f42797465733a206e6577416363496e7075744861736820646f6573206e6f742060648201527f6578697374000000000000000000000000000000000000000000000000000000608482015260a401610994565b67ffffffffffffffff87166000908152606b602090815260409182902054606e5492517fffffffffffffffffffffffffffffffffffffffff0000000000000000000000003360601b16928101929092526034820152605481018490527fffffffffffffffff00000000000000000000000000000000000000000000000060c08a811b8216607484015292831b8116607c8301526084820187905260a4820184905260c482018890529188901b90911660e482015260ec01604051602081830303815290604052925050505b949350505050565b611de8613ed0565b60695467ffffffffffffffff9081169088161115611e945760405162461bcd60e51b815260206004820152604a60248201527f50726f6f664f66456666696369656e63793a3a7665726966794261746368657360448201527f3a205f6c61737456657269666965644261746368206d757374206265206c657360648201527f73206f7220657175616c00000000000000000000000000000000000000000000608482015260a401610994565b60695467ffffffffffffffff90811690871611611f3f5760405162461bcd60e51b815260206004820152605860248201527f50726f6f664f66456666696369656e63793a3a7665726966794261746368657360448201527f3a206e657756657269666965644261746368206d75737420626520626967676560648201527f72207468616e206c617374566572696669656442617463680000000000000000608482015260a401610994565b67ffffffffffffffff80881660009081526067602052604080822054928916825290205481611fd65760405162461bcd60e51b815260206004820152603e60248201527f50726f6f664f66456666696369656e63793a3a76657269667942617463683a2060448201527f6f6c64416363496e7075744861736820646f6573206e6f7420657869737400006064820152608401610994565b806119645760405162461bcd60e51b815260206004820152603e60248201527f50726f6f664f66456666696369656e63793a3a76657269667942617463683a2060448201527f6e6577416363496e7075744861736820646f6573206e6f7420657869737400006064820152608401610994565b60685460009067ffffffffffffffff7001000000000000000000000000000000008204811691612098917801000000000000000000000000000000000000000000000000909104166001614fe2565b6120a29190614e6f565b6120be9067ffffffffffffffff16670de0b6b3a7640000614eaf565b905090565b600054610100900460ff16158080156120e35750600054600160ff909116105b806120fd5750303b1580156120fd575060005460ff166001145b61216f5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610994565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905580156121cd57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b606a80547fffffffffffffffffffffffff000000000000000000000000000000000000000090811673ffffffffffffffffffffffffffffffffffffffff8f811691909117909255606580547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101008f851602179055606c80549091168c831617905560008052606b6020527fc8cc8bda7ad4886bea3ebbdafa02e79d37c39bf4011696b26a31a0802fd9458b8a9055606980547fffffff000000000000000000000000000000000000000000ffffffffffffffff1668010000000000000000928b16929092027fffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff16919091177c010000000000000000000000000000000000000000000000000000000089151502179055606d61230c878261505c565b50606e80547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff8716179055606f61234d858261505c565b506071805473ffffffffffffffffffffffffffffffffffffffff8086167fffffffffffffffffffffffff00000000000000000000000000000000000000009283161790925560708054928516929091169190911790556123ab614151565b801561240e57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050505050565b60695468010000000000000000900473ffffffffffffffffffffffffffffffffffffffff1633146124b55760405162461bcd60e51b815260206004820152603f60248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7954727573746564536560448201527f7175656e6365723a206f6e6c7920747275737465642073657175656e636572006064820152608401610994565b606980548215157c0100000000000000000000000000000000000000000000000000000000027fffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff9091161790556040517fbacda50a4a8575be1d91a7ebe29ee45056f3a94f12a2281eb6b43afa33bcefe690610a0c90831515815260200190565b61253e613ed0565b606980547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff92909216919091179055565b6065546040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152600091829161010090910473ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa1580156125f0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126149190614e1e565b60695460685491925060009167ffffffffffffffff918216916801000000000000000082048116916126799170010000000000000000000000000000000082048116917801000000000000000000000000000000000000000000000000900416614e6f565b6126839190614fe2565b61268d9190614e6f565b67ffffffffffffffff1690506126a38183615158565b9250505090565b6126b2613ed0565b6068805467ffffffffffffffff90921668010000000000000000027fffffffffffffffffffffffffffffffff0000000000000000ffffffffffffffff909216919091179055565b612701613ed0565b606f61270d828261505c565b5050565b60655460ff16156127b05760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a401610994565b8567ffffffffffffffff168767ffffffffffffffff161061285f5760405162461bcd60e51b815260206004820152605d60248201527f50726f6f664f66456666696369656e63793a3a70726f76654e6f6e446574657260448201527f6d696e697374696353746174653a2066696e616c4e65774261746368206d757360648201527f7420626520626967676572207468616e20696e69744e756d4261746368000000608482015260a401610994565b60695467ffffffffffffffff90811690871611156129315760405162461bcd60e51b815260206004820152606960248201527f50726f6f664f66456666696369656e63793a3a70726f76654e6f6e446574657260448201527f6d696e697374696353746174653a2066696e616c4e65774261746368206d757360648201527f74206265206c657373206f7220657175616c207468616e206c6173745665726960848201527f666965644261746368000000000000000000000000000000000000000000000060a482015260c401610994565b67ffffffffffffffff87166000908152606b60205260409020546129e35760405162461bcd60e51b815260206004820152605560248201527f50726f6f664f66456666696369656e63793a3a70726f76654e6f6e446574657260448201527f6d696e697374696353746174653a20696e69744e756d4261746368207374617460648201527f6520726f6f7420646f6573206e6f742065786973740000000000000000000000608482015260a401610994565b67ffffffffffffffff86166000908152606b6020526040902054612a955760405162461bcd60e51b815260206004820152605660248201527f50726f6f664f66456666696369656e63793a3a70726f76654e6f6e446574657260448201527f6d696e697374696353746174653a2066696e616c4e657742617463682073746160648201527f746520726f6f7420646f6573206e6f7420657869737400000000000000000000608482015260a401610994565b6000612aa388888888611ba9565b905060007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001600283604051612ad89190614eec565b602060405180830381855afa158015612af5573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190612b189190614e1e565b612b229190614f37565b606c546040805160208101825283815290517f43753b4d00000000000000000000000000000000000000000000000000000000815292935073ffffffffffffffffffffffffffffffffffffffff909116916343753b4d91612b8c9189918991899190600401614f4b565b602060405180830381865afa158015612ba9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bcd9190614fc5565b612c3f5760405162461bcd60e51b815260206004820152603c60248201527f50726f6f664f66456666696369656e63793a3a70726f76654e6f6e446574657260448201527f6d696e697374696353746174653a20494e56414c49445f50524f4f46000000006064820152608401610994565b67ffffffffffffffff88166000908152606b6020526040902054869003612cf45760405162461bcd60e51b815260206004820152606060248201527f50726f6f664f66456666696369656e63793a3a70726f76654e6f6e446574657260448201527f6d696e697374696353746174653a2073746f72656420726f6f74206d7573742060648201527f626520646966666572656e74207468616e206e657720737461746520726f6f74608482015260a401610994565b67ffffffffffffffff88166000908152606b60209081526040918290205482519081529081018890527f10b370e2afd2be06fe3170fec9cb3bbd87233f3deb63d488c0dde59813afdabe910160405180910390a1612d50613f37565b505050505050505050565b60695468010000000000000000900473ffffffffffffffffffffffffffffffffffffffff163314612df45760405162461bcd60e51b815260206004820152603f60248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7954727573746564536560448201527f7175656e6365723a206f6e6c7920747275737465642073657175656e636572006064820152608401610994565b606d612e00828261505c565b507f6b8f723a4c7a5335cafae8a598a0aa0301be1387c037dccc085b62add6448b2081604051610a0c919061460e565b60695460009067ffffffffffffffff868116911614612edd5760405162461bcd60e51b815260206004820152604160248201527f50726f6f664f66456666696369656e63793a3a76657269667942617463683a2060448201527f5f6c6173745665726966696564426174636820646f6573206e6f74206d61746360648201527f6800000000000000000000000000000000000000000000000000000000000000608482015260a401610994565b8467ffffffffffffffff168467ffffffffffffffff1611612f8c5760405162461bcd60e51b815260206004820152605660248201527f50726f6f664f66456666696369656e63793a3a76657269667942617463683a2060448201527f6e657756657269666965644261746368206d757374206265206269676765722060648201527f7468616e206c6173745665726966696564426174636800000000000000000000608482015260a401610994565b60685467ffffffffffffffff68010000000000000000909104811690851611156130445760405162461bcd60e51b815260206004820152604260248201527f50726f6f664f66456666696369656e63793a3a76657269667942617463683a2060448201527f626174636820646f6573206e6f742068617665206265656e2073657175656e6360648201527f6564000000000000000000000000000000000000000000000000000000000000608482015260a401610994565b600061305286868686611ba9565b905060007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000016002836040516130879190614eec565b602060405180830381855afa1580156130a4573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906130c79190614e1e565b6130d19190614f37565b979650505050505050565b60655460ff161561317b5760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a401610994565b6069547c0100000000000000000000000000000000000000000000000000000000900460ff16151560011461323e5760405162461bcd60e51b815260206004820152604860248201527f50726f6f664f66456666696369656e63793a3a6973466f72636542617463684160448201527f6c6c6f7765643a206f6e6c7920696620666f726365206261746368206973206160648201527f7661696c61626c65000000000000000000000000000000000000000000000000608482015260a401610994565b8051806132d95760405162461bcd60e51b815260206004820152604260248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365466f72636560448201527f42617463683a204d75737420666f726365206174206c6561737420312062617460648201527f6368000000000000000000000000000000000000000000000000000000000000608482015260a401610994565b60685467ffffffffffffffff7801000000000000000000000000000000000000000000000000820481169161332491849170010000000000000000000000000000000090041661516c565b11156133985760405162461bcd60e51b815260206004820152603a60248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365466f72636560448201527f42617463683a20466f72636520626174636820696e76616c69640000000000006064820152608401610994565b60685467ffffffffffffffff680100000000000000008204811660008181526067602052604081205491937001000000000000000000000000000000009004909216915b848110156136b15760008682815181106133f8576133f8614d99565b60200260200101519050838061340d90614df7565b825180516020918201208185015160408087015181519485019390935283015260c01b7fffffffffffffffff0000000000000000000000000000000000000000000000001660608201529095506000915060680160408051601f19818403018152918152815160209283012067ffffffffffffffff881660009081526066909352912054909150811461352e5760405162461bcd60e51b815260206004820152604760248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365466f72636560448201527f426174636865733a20466f7263656420626174636865732064617461206d757360648201527f74206d6174636800000000000000000000000000000000000000000000000000608482015260a401610994565b613539600188614e98565b83036135f7574262093a8083604001516135539190614fe2565b67ffffffffffffffff1611156135f75760405162461bcd60e51b815260206004820152604c60248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365466f72636560448201527f42617463683a20466f72636564206261746368206973206e6f7420696e20746960648201527f6d656f757420706572696f640000000000000000000000000000000000000000608482015260a401610994565b8151805160209182012081840151604080519384018890528301919091526060808301919091524260c01b7fffffffffffffffff00000000000000000000000000000000000000000000000016608083015233901b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166088820152609c01604051602081830303815290604052805190602001209350858061369990614df7565b965050505080806136a990614e37565b9150506133dc565b50606880544267ffffffffffffffff9081167fffffffffffffffffffffffffffffffff000000000000000000000000000000009092169190911768010000000000000000868316818102929092177fffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff1670010000000000000000000000000000000087851602178455600091825260676020526040808320869055935493519304909116917f648a61dd2438f072f5a1960939abd30f37aea80d2e94c9792ad142d3e0a490a49190a25050505050565b60655460ff166137f95760405162461bcd60e51b815260206004820152603b60248201527f456d657267656e63794d616e616765723a3a6966456d657267656e637953746160448201527f74653a206f6e6c7920696620656d657267656e637920737461746500000000006064820152608401610994565b60705473ffffffffffffffffffffffffffffffffffffffff1633146138865760405162461bcd60e51b815260206004820152603d60248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7953656375726974794360448201527f6f756e63696c3a206f6e6c7920736563757269747920636f756e63696c0000006064820152608401610994565b607160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dbc169766040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156138f057600080fd5b505af1158015613904573d6000803e3d6000fd5b50505050610ac66141d7565b60655460ff16156139af5760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a401610994565b6069547c0100000000000000000000000000000000000000000000000000000000900460ff161515600114613a725760405162461bcd60e51b815260206004820152604860248201527f50726f6f664f66456666696369656e63793a3a6973466f72636542617463684160448201527f6c6c6f7765643a206f6e6c7920696620666f726365206261746368206973206160648201527f7661696c61626c65000000000000000000000000000000000000000000000000608482015260a401610994565b6000613a7c612049565b905081811115613af45760405162461bcd60e51b815260206004820152602f60248201527f50726f6f664f66456666696369656e63793a3a666f72636542617463683a206e60448201527f6f7420656e6f756768206d6174696300000000000000000000000000000000006064820152608401610994565b61ea60835110613b6c5760405162461bcd60e51b815260206004820152603a60248201527f50726f6f664f66456666696369656e63793a3a666f72636542617463683a205460448201527f72616e73616374696f6e73206279746573206f766572666c6f770000000000006064820152608401610994565b606554613b9690610100900473ffffffffffffffffffffffffffffffffffffffff16333084613fc1565b606a54604080517f3ed691ef000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff1691633ed691ef9160048083019260209291908290030181865afa158015613c06573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c2a9190614e1e565b60688054919250780100000000000000000000000000000000000000000000000090910467ffffffffffffffff16906018613c6483614df7565b91906101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505083805190602001208142604051602001613cdd93929190928352602083019190915260c01b7fffffffffffffffff00000000000000000000000000000000000000000000000016604082015260480190565b60408051808303601f1901815291815281516020928301206068547801000000000000000000000000000000000000000000000000900467ffffffffffffffff1660009081526066909352912055323303613dad57606854604080518381523360208201526060918101829052600091810191909152780100000000000000000000000000000000000000000000000090910467ffffffffffffffff16907ff94bb37db835f1ab585ee00041849a09b12cd081d77fa15ca070757619cbc9319060800160405180910390a2613e0a565b606860189054906101000a900467ffffffffffffffff1667ffffffffffffffff167ff94bb37db835f1ab585ee00041849a09b12cd081d77fa15ca070757619cbc931823387604051613e0193929190615184565b60405180910390a25b50505050565b613e18613ed0565b73ffffffffffffffffffffffffffffffffffffffff8116613ea15760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610994565b613eaa816140da565b50565b613eb5613ed0565b67ffffffffffffffff166000908152606b6020526040902055565b60335473ffffffffffffffffffffffffffffffffffffffff163314610ac65760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610994565b607160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632072f6c56040518163ffffffff1660e01b8152600401600060405180830381600087803b158015613fa157600080fd5b505af1158015613fb5573d6000803e3d6000fd5b50505050610ac66142a2565b60405173ffffffffffffffffffffffffffffffffffffffff80851660248301528316604482015260648101829052613e0a9085907f23b872dd00000000000000000000000000000000000000000000000000000000906084015b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152614397565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526140d59084907fa9059cbb000000000000000000000000000000000000000000000000000000009060640161401b565b505050565b6033805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff166141ce5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610994565b610ac6336140da565b60655460ff1661424f5760405162461bcd60e51b815260206004820152603b60248201527f456d657267656e63794d616e616765723a3a6966456d657267656e637953746160448201527f74653a206f6e6c7920696620656d657267656e637920737461746500000000006064820152608401610994565b606580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690556040517f1e5e34eea33501aecf2ebec9fe0e884a40804275ea7fe10b2ba084c8374308b390600090a1565b60655460ff16156143415760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a401610994565b606580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556040517f2261efe5aef6fedc1fd1550b25facc9181745623049c7901287030b9ad1a549790600090a1565b60006143f9826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166144899092919063ffffffff16565b8051909150156140d557808060200190518101906144179190614fc5565b6140d55760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610994565b6060611dd88484600085856000808673ffffffffffffffffffffffffffffffffffffffff1685876040516144bd9190614eec565b60006040518083038185875af1925050503d80600081146144fa576040519150601f19603f3d011682016040523d82523d6000602084013e6144ff565b606091505b50915091506130d187838387606083156145875782516000036145805773ffffffffffffffffffffffffffffffffffffffff85163b6145805760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610994565b5081611dd8565b611dd8838381511561459c5781518083602001fd5b8060405162461bcd60e51b8152600401610994919061460e565b60005b838110156145d15781810151838201526020016145b9565b83811115613e0a5750506000910152565b600081518084526145fa8160208601602086016145b6565b601f01601f19169290920160200192915050565b60208152600061462160208301846145e2565b9392505050565b803567ffffffffffffffff8116811461464057600080fd5b919050565b6000806040838503121561465857600080fd5b61466183614628565b946020939093013593505050565b73ffffffffffffffffffffffffffffffffffffffff81168114613eaa57600080fd5b80356146408161466f565b6000602082840312156146ae57600080fd5b81356146218161466f565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516080810167ffffffffffffffff8111828210171561470b5761470b6146b9565b60405290565b6040516060810167ffffffffffffffff8111828210171561470b5761470b6146b9565b604051601f8201601f1916810167ffffffffffffffff8111828210171561475d5761475d6146b9565b604052919050565b600067ffffffffffffffff82111561477f5761477f6146b9565b5060051b60200190565b600082601f83011261479a57600080fd5b813567ffffffffffffffff8111156147b4576147b46146b9565b6147c76020601f19601f84011601614734565b8181528460208386010111156147dc57600080fd5b816020850160208301376000918101602001919091529392505050565b6000602080838503121561480c57600080fd5b823567ffffffffffffffff8082111561482457600080fd5b818501915085601f83011261483857600080fd5b813561484b61484682614765565b614734565b81815260059190911b8301840190848101908883111561486a57600080fd5b8585015b83811015614903578035858111156148865760008081fd5b86016080818c03601f190181131561489e5760008081fd5b6148a66146e8565b89830135888111156148b85760008081fd5b6148c68e8c83870101614789565b8252506040808401358b83015260606148e0818601614628565b828401526148ef848601614628565b90830152508552505091860191860161486e565b5098975050505050505050565b60006020828403121561492257600080fd5b61462182614628565b806040810183101561493c57600080fd5b92915050565b6000806000806000806000610180888a03121561495e57600080fd5b61496788614628565b965061497560208901614628565b955060408801359450606088013593506149928960808a0161492b565b92506101408801898111156149a657600080fd5b60c0890192506149b68a8261492b565b91505092959891949750929550565b600080600080600060a086880312156149dd57600080fd5b85359450602086013567ffffffffffffffff8111156149fb57600080fd5b614a0788828901614789565b94505060408601359250614a1d60608701614628565b91506080860135614a2d8161466f565b809150509295509295909350565b60008060008060808587031215614a5157600080fd5b614a5a85614628565b9350614a6860208601614628565b93969395505050506040820135916060013590565b8015158114613eaa57600080fd5b803561464081614a7d565b60008060008060008060008060008060006101608c8e031215614ab857600080fd5b614ac18c614691565b9a50614acf60208d01614691565b9950614add60408d01614691565b985060608c01359750614af260808d01614691565b9650614b0060a08d01614a8b565b955067ffffffffffffffff8060c08e01351115614b1c57600080fd5b614b2c8e60c08f01358f01614789565b9550614b3a60e08e01614628565b9450806101008e01351115614b4e57600080fd5b50614b608d6101008e01358e01614789565b9250614b6f6101208d01614691565b9150614b7e6101408d01614691565b90509295989b509295989b9093969950565b600060208284031215614ba257600080fd5b813561462181614a7d565b600060208284031215614bbf57600080fd5b813567ffffffffffffffff811115614bd657600080fd5b611dd884828501614789565b60006020808385031215614bf557600080fd5b823567ffffffffffffffff80821115614c0d57600080fd5b818501915085601f830112614c2157600080fd5b8135614c2f61484682614765565b81815260059190911b83018401908481019088831115614c4e57600080fd5b8585015b8381101561490357803585811115614c6a5760008081fd5b86016060818c03601f1901811315614c825760008081fd5b614c8a614711565b8983013588811115614c9c5760008081fd5b614caa8e8c83870101614789565b8252506040808401358b830152614cc2838501614628565b9082015285525050918601918601614c52565b60008060408385031215614ce857600080fd5b823567ffffffffffffffff811115614cff57600080fd5b614d0b85828601614789565b95602094909401359450505050565b60008060408385031215614d2d57600080fd5b82359150614d3d60208401614628565b90509250929050565b600181811c90821680614d5a57607f821691505b602082108103614d93577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600067ffffffffffffffff808316818103614e1457614e14614dc8565b6001019392505050565b600060208284031215614e3057600080fd5b5051919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203614e6857614e68614dc8565b5060010190565b600067ffffffffffffffff83811690831681811015614e9057614e90614dc8565b039392505050565b600082821015614eaa57614eaa614dc8565b500390565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614ee757614ee7614dc8565b500290565b60008251614efe8184602087016145b6565b9190910192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600082614f4657614f46614f08565b500690565b61012081016040808784376000838201818152879190815b6002811015614f8357848483379084018281529284019290600101614f63565b5050828760c0870137610100850181815286935091505b6001811015614fb9578251825260209283019290910190600101614f9a565b50505095945050505050565b600060208284031215614fd757600080fd5b815161462181614a7d565b600067ffffffffffffffff80831681851680830382111561500557615005614dc8565b01949350505050565b601f8211156140d557600081815260208120601f850160051c810160208610156150355750805b601f850160051c820191505b8181101561505457828155600101615041565b505050505050565b815167ffffffffffffffff811115615076576150766146b9565b61508a816150848454614d46565b8461500e565b602080601f8311600181146150dd57600084156150a75750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b178555615054565b600085815260208120601f198616915b8281101561510c578886015182559484019460019091019084016150ed565b508582101561514857878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b60008261516757615167614f08565b500490565b6000821982111561517f5761517f614dc8565b500190565b83815273ffffffffffffffffffffffffffffffffffffffff831660208201526060604082015260006151b960608301846145e2565b9594505050505056fea2646970667358221220e08ced41d4270e65705ee9e498f554a781dd1c769981d219d457cb4ce80198e364736f6c634300080f0033", + "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061032b5760003560e01c80638da5cb5b116101b2578063c89e42df116100f9578063dbc16976116100a2578063eaeb077b1161007c578063eaeb077b14610810578063f2fde38b14610823578063f755276114610836578063fe16564f1461084557600080fd5b8063dbc16976146107b8578063e7a7ed02146107c0578063e8bf92ed146107f057600080fd5b8063d0ae98dd116100d3578063d0ae98dd14610765578063d8d1091b14610778578063d8f54db01461078b57600080fd5b8063c89e42df14610706578063cfa8ed4714610719578063d02103ca1461074557600080fd5b8063adc879e91161015b578063b6b0b09711610135578063b6b0b097146106bb578063c0cad302146106e0578063c3fd0f9c146106f357600080fd5b8063adc879e91461067e578063b02286c014610692578063b4d63f581461069b57600080fd5b80639b7967601161018c5780639b79676014610641578063a3c573eb14610654578063ab9fc5ef1461067457600080fd5b80638da5cb5b1461060857806396dc3d391461062657806399f5634e1461063957600080fd5b80635437988d116102765780637152facf1161021f5780637fcb3653116101f95780637fcb3653146105ce57806381df7d3f146105e25780638c4a0af7146105f557600080fd5b80637152facf146105a0578063748608de146105b357806379847057146105c657600080fd5b80636b8616ce116102505780636b8616ce146105655780636ff512cc14610585578063715018a61461059857600080fd5b80635437988d1461049e57806355b925e6146104b1578063574f649e146104c457600080fd5b806327eb6c0f116102d857806345605267116102b257806345605267146104405780635392c5e014610468578063542028d51461049657600080fd5b806327eb6c0f146103c85780633c1582671461040d578063423fa8561461042057600080fd5b80631a26da14116103095780631a26da14146103985780631c1083e2146103ad5780632072f6c5146103c057600080fd5b8063107bf28c1461033057806315064c961461034e57806319d8ac611461036b575b600080fd5b610338610858565b604051610345919061460e565b60405180910390f35b60655461035b9060ff1681565b6040519015158152602001610345565b60685461037f9067ffffffffffffffff1681565b60405167ffffffffffffffff9091168152602001610345565b6103ab6103a6366004614645565b6108e6565b005b6103ab6103bb36600461469c565b61090b565b6103ab610a17565b6070546103e89073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610345565b6103ab61041b3660046147f9565b610ac8565b60685461037f9068010000000000000000900467ffffffffffffffff1681565b60685461037f90700100000000000000000000000000000000900467ffffffffffffffff1681565b610488610476366004614910565b606b6020526000908152604090205481565b604051908152602001610345565b610338611458565b6103ab6104ac36600461469c565b611465565b6103ab6104bf366004614942565b6114b4565b6104886104d23660046149c5565b835160209485012060408051808701979097528681019190915260608087019490945260c09290921b7fffffffffffffffff00000000000000000000000000000000000000000000000016608086015290911b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001660888401528051808403607c018152609c9093019052815191012090565b610488610573366004614910565b60666020526000908152604090205481565b6103ab61059336600461469c565b611a7d565b6103ab611b97565b6103386105ae366004614a3b565b611ba9565b6103ab6105c1366004614942565b611de0565b610488612049565b60695461037f9067ffffffffffffffff1681565b6103ab6105f0366004614a96565b6120c3565b6103ab610603366004614b90565b61241c565b60335473ffffffffffffffffffffffffffffffffffffffff166103e8565b6103ab610634366004614910565b612536565b610488612579565b6103ab61064f366004614910565b6126aa565b6071546103e89073ffffffffffffffffffffffffffffffffffffffff1681565b61037f62093a8081565b606e5461037f9067ffffffffffffffff1681565b61048861ea6081565b6104886106a9366004614910565b60676020526000908152604090205481565b6065546103e890610100900473ffffffffffffffffffffffffffffffffffffffff1681565b6103ab6106ee366004614bad565b6126f9565b6103ab610701366004614942565b612711565b6103ab610714366004614bad565b612d5b565b6069546103e89068010000000000000000900473ffffffffffffffffffffffffffffffffffffffff1681565b606a546103e89073ffffffffffffffffffffffffffffffffffffffff1681565b610488610773366004614a3b565b612e30565b6103ab610786366004614be2565b6130dc565b60695461035b907c0100000000000000000000000000000000000000000000000000000000900460ff1681565b6103ab613781565b60685461037f907801000000000000000000000000000000000000000000000000900467ffffffffffffffff1681565b606c546103e89073ffffffffffffffffffffffffffffffffffffffff1681565b6103ab61081e366004614cd5565b613910565b6103ab61083136600461469c565b613e10565b61048867016345785d8a000081565b6103ab610853366004614d1a565b613ead565b606f805461086590614d46565b80601f016020809104026020016040519081016040528092919081815260200182805461089190614d46565b80156108de5780601f106108b3576101008083540402835291602001916108de565b820191906000526020600020905b8154815290600101906020018083116108c157829003601f168201915b505050505081565b6108ee613ed0565b67ffffffffffffffff909116600090815260676020526040902055565b60705473ffffffffffffffffffffffffffffffffffffffff16331461099d5760405162461bcd60e51b815260206004820152603d60248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7953656375726974794360448201527f6f756e63696c3a206f6e6c7920736563757269747920636f756e63696c00000060648201526084015b60405180910390fd5b607080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527f373a9d1d60f01a33ff86d540991f09f5c5d7482656794de80be077c5eb9693d9906020015b60405180910390a150565b60655460ff1615610ab65760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a401610994565b610abe613ed0565b610ac6613f37565b565b60655460ff1615610b675760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a401610994565b60695468010000000000000000900473ffffffffffffffffffffffffffffffffffffffff163314610c005760405162461bcd60e51b815260206004820152603f60248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7954727573746564536560448201527f7175656e6365723a206f6e6c7920747275737465642073657175656e636572006064820152608401610994565b805180610c9b5760405162461bcd60e51b815260206004820152604260248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365426174636860448201527f65733a204174206c65617374206d7573742073657175656e636520312062617460648201527f6368000000000000000000000000000000000000000000000000000000000000608482015260a401610994565b60685467ffffffffffffffff680100000000000000008204811660008181526067602052604081205483851694929370010000000000000000000000000000000090930490921691905b85811015611249576000878281518110610d0157610d01614d99565b602002602001015190506000816060015167ffffffffffffffff161115610f1a5783610d2c81614df7565b945050600081600001518051906020012082602001518360600151604051602001610d8f93929190928352602083019190915260c01b7fffffffffffffffff00000000000000000000000000000000000000000000000016604082015260480190565b60408051601f19818403018152918152815160209283012067ffffffffffffffff8816600090815260669093529120549091508114610e5c5760405162461bcd60e51b815260206004820152604260248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365426174636860448201527f65733a20466f7263656420626174636865732064617461206d757374206d617460648201527f6368000000000000000000000000000000000000000000000000000000000000608482015260a401610994565b816060015167ffffffffffffffff16826040015167ffffffffffffffff161015610f145760405162461bcd60e51b815260206004820152605d60248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365426174636860448201527f65733a20466f7263656420626174636865732074696d657374616d70206d757360648201527f7420626520626967676572206f7220657175616c207468616e206d696e000000608482015260a401610994565b506110b4565b60208101511580610fc95750606a5460208201516040517f257b363200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9092169163257b363291610f839160040190815260200190565b6020604051808303816000875af1158015610fa2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fc69190614e1e565b15155b61103b5760405162461bcd60e51b815260206004820152603f60248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365426174636860448201527f65733a20476c6f62616c206578697420726f6f74206d757374206578697374006064820152608401610994565b80515161ea60116110b45760405162461bcd60e51b815260206004820152603f60248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365426174636860448201527f65733a205472616e73616374696f6e73206279746573206f766572666c6f77006064820152608401610994565b8567ffffffffffffffff16816040015167ffffffffffffffff16101580156110ea575042816040015167ffffffffffffffff1611155b6111825760405162461bcd60e51b815260206004820152604260248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365426174636860448201527f65733a2054696d657374616d70206d75737420626520696e736964652072616e60648201527f6765000000000000000000000000000000000000000000000000000000000000608482015260a401610994565b805180516020918201208183015160408085015181519485018890529084019290925260608084019190915260c09190911b7fffffffffffffffff00000000000000000000000000000000000000000000000016608083015233901b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166088820152609c01604051602081830303815290604052805190602001209250848061122b90614df7565b9550508060400151955050808061124190614e37565b915050610ce5565b5060685467ffffffffffffffff7801000000000000000000000000000000000000000000000000909104811690831611156112ec5760405162461bcd60e51b815260206004820152603a60248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365426174636860448201527f65733a20466f7263652062617463686573206f766572666c6f770000000000006064820152608401610994565b60685460009061131a90700100000000000000000000000000000000900467ffffffffffffffff1684614e6f565b61132e9067ffffffffffffffff1687614e98565b6068805467ffffffffffffffff868116700100000000000000000000000000000000027fffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff8983166801000000000000000081027fffffffffffffffffffffffffffffffff00000000000000000000000000000000909516938c16939093179390931792909216919091179091556000908152606760205260409020839055905061140b33306113e58467016345785d8a0000614eaf565b606554610100900473ffffffffffffffffffffffffffffffffffffffff16929190613fc1565b6068546040516801000000000000000090910467ffffffffffffffff16907f303446e6a8cb73c83dff421c0b1d5e5ce0719dab1bff13660fc254e58cc17fce90600090a250505050505050565b606d805461086590614d46565b61146d613ed0565b606c80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60655460ff16156115535760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a401610994565b60695467ffffffffffffffff90811690881611156115ff5760405162461bcd60e51b815260206004820152605b60248201527f50726f6f664f66456666696369656e63793a3a7665726966794261746368657360448201527f3a20696e69744e756d4261746368206d757374206265206c657373206f72206560648201527f7175616c207468616e206c617374566572696669656442617463680000000000608482015260a401610994565b60695467ffffffffffffffff908116908716116116aa5760405162461bcd60e51b815260206004820152605560248201527f50726f6f664f66456666696369656e63793a3a7665726966794261746368657360448201527f3a2066696e616c4e65774261746368206d75737420626520626967676572207460648201527f68616e206c617374566572696669656442617463680000000000000000000000608482015260a401610994565b67ffffffffffffffff87166000908152606b602052604090205461175c5760405162461bcd60e51b815260206004820152604860248201527f50726f6f664f66456666696369656e63793a3a7665726966794261746368657360448201527f3a20696e69744e756d426174636820737461746520726f6f7420646f6573206e60648201527f6f74206578697374000000000000000000000000000000000000000000000000608482015260a401610994565b600061176a88888888611ba9565b905060007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000160028360405161179f9190614eec565b602060405180830381855afa1580156117bc573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906117df9190614e1e565b6117e99190614f37565b606c546040805160208101825283815290517f43753b4d00000000000000000000000000000000000000000000000000000000815292935073ffffffffffffffffffffffffffffffffffffffff909116916343753b4d916118539189918991899190600401614f4b565b602060405180830381865afa158015611870573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118949190614fc5565b6119065760405162461bcd60e51b815260206004820152602f60248201527f50726f6f664f66456666696369656e63793a3a7665726966794261746368657360448201527f3a20494e56414c49445f50524f4f4600000000000000000000000000000000006064820152608401610994565b6069546119649033906119239067ffffffffffffffff168b614e6f565b67ffffffffffffffff16611935612579565b61193f9190614eaf565b606554610100900473ffffffffffffffffffffffffffffffffffffffff16919061407f565b606980547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff8a169081179091556000908152606b602052604090819020879055606a5490517f33d6247d0000000000000000000000000000000000000000000000000000000081526004810189905273ffffffffffffffffffffffffffffffffffffffff909116906333d6247d90602401600060405180830381600087803b158015611a1957600080fd5b505af1158015611a2d573d6000803e3d6000fd5b505060405188815233925067ffffffffffffffff8b1691507f9c72852172521097ba7e1482e6b44b351323df0155f97f4ea18fcec28e1f59669060200160405180910390a3505050505050505050565b60695468010000000000000000900473ffffffffffffffffffffffffffffffffffffffff163314611b165760405162461bcd60e51b815260206004820152603f60248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7954727573746564536560448201527f7175656e6365723a206f6e6c7920747275737465642073657175656e636572006064820152608401610994565b606980547fffffffff0000000000000000000000000000000000000000ffffffffffffffff166801000000000000000073ffffffffffffffffffffffffffffffffffffffff8416908102919091179091556040519081527ff54144f9611984021529f814a1cb6a41e22c58351510a0d9f7e822618abb9cc090602001610a0c565b611b9f613ed0565b610ac660006140da565b67ffffffffffffffff808516600081815260676020526040808220549387168252902054606092911580611bdc57508115155b611c745760405162461bcd60e51b815260206004820152604560248201527f50726f6f664f66456666696369656e63793a3a676574496e707574536e61726b60448201527f42797465733a206f6c64416363496e7075744861736820646f6573206e6f742060648201527f6578697374000000000000000000000000000000000000000000000000000000608482015260a401610994565b80611d0d5760405162461bcd60e51b815260206004820152604560248201527f50726f6f664f66456666696369656e63793a3a676574496e707574536e61726b60448201527f42797465733a206e6577416363496e7075744861736820646f6573206e6f742060648201527f6578697374000000000000000000000000000000000000000000000000000000608482015260a401610994565b67ffffffffffffffff87166000908152606b602090815260409182902054606e5492517fffffffffffffffffffffffffffffffffffffffff0000000000000000000000003360601b16928101929092526034820152605481018490527fffffffffffffffff00000000000000000000000000000000000000000000000060c08a811b8216607484015292831b8116607c8301526084820187905260a4820184905260c482018890529188901b90911660e482015260ec01604051602081830303815290604052925050505b949350505050565b611de8613ed0565b60695467ffffffffffffffff9081169088161115611e945760405162461bcd60e51b815260206004820152604a60248201527f50726f6f664f66456666696369656e63793a3a7665726966794261746368657360448201527f3a205f6c61737456657269666965644261746368206d757374206265206c657360648201527f73206f7220657175616c00000000000000000000000000000000000000000000608482015260a401610994565b60695467ffffffffffffffff90811690871611611f3f5760405162461bcd60e51b815260206004820152605860248201527f50726f6f664f66456666696369656e63793a3a7665726966794261746368657360448201527f3a206e657756657269666965644261746368206d75737420626520626967676560648201527f72207468616e206c617374566572696669656442617463680000000000000000608482015260a401610994565b67ffffffffffffffff80881660009081526067602052604080822054928916825290205481611fd65760405162461bcd60e51b815260206004820152603e60248201527f50726f6f664f66456666696369656e63793a3a76657269667942617463683a2060448201527f6f6c64416363496e7075744861736820646f6573206e6f7420657869737400006064820152608401610994565b806119645760405162461bcd60e51b815260206004820152603e60248201527f50726f6f664f66456666696369656e63793a3a76657269667942617463683a2060448201527f6e6577416363496e7075744861736820646f6573206e6f7420657869737400006064820152608401610994565b60685460009067ffffffffffffffff7001000000000000000000000000000000008204811691612098917801000000000000000000000000000000000000000000000000909104166001614fe2565b6120a29190614e6f565b6120be9067ffffffffffffffff16670de0b6b3a7640000614eaf565b905090565b600054610100900460ff16158080156120e35750600054600160ff909116105b806120fd5750303b1580156120fd575060005460ff166001145b61216f5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610994565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905580156121cd57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b606a80547fffffffffffffffffffffffff000000000000000000000000000000000000000090811673ffffffffffffffffffffffffffffffffffffffff8f811691909117909255606580547fffffffffffffffffffffff0000000000000000000000000000000000000000ff166101008f851602179055606c80549091168c831617905560008052606b6020527fc8cc8bda7ad4886bea3ebbdafa02e79d37c39bf4011696b26a31a0802fd9458b8a9055606980547fffffff000000000000000000000000000000000000000000ffffffffffffffff1668010000000000000000928b16929092027fffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff16919091177c010000000000000000000000000000000000000000000000000000000089151502179055606d61230c878261505c565b50606e80547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff8716179055606f61234d858261505c565b506071805473ffffffffffffffffffffffffffffffffffffffff8086167fffffffffffffffffffffffff00000000000000000000000000000000000000009283161790925560708054928516929091169190911790556123ab614151565b801561240e57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050505050565b60695468010000000000000000900473ffffffffffffffffffffffffffffffffffffffff1633146124b55760405162461bcd60e51b815260206004820152603f60248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7954727573746564536560448201527f7175656e6365723a206f6e6c7920747275737465642073657175656e636572006064820152608401610994565b606980548215157c0100000000000000000000000000000000000000000000000000000000027fffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff9091161790556040517fbacda50a4a8575be1d91a7ebe29ee45056f3a94f12a2281eb6b43afa33bcefe690610a0c90831515815260200190565b61253e613ed0565b606980547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff92909216919091179055565b6065546040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152600091829161010090910473ffffffffffffffffffffffffffffffffffffffff16906370a0823190602401602060405180830381865afa1580156125f0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126149190614e1e565b60695460685491925060009167ffffffffffffffff918216916801000000000000000082048116916126799170010000000000000000000000000000000082048116917801000000000000000000000000000000000000000000000000900416614e6f565b6126839190614fe2565b61268d9190614e6f565b67ffffffffffffffff1690506126a38183615158565b9250505090565b6126b2613ed0565b6068805467ffffffffffffffff90921668010000000000000000027fffffffffffffffffffffffffffffffff0000000000000000ffffffffffffffff909216919091179055565b612701613ed0565b606f61270d828261505c565b5050565b60655460ff16156127b05760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a401610994565b8567ffffffffffffffff168767ffffffffffffffff161061285f5760405162461bcd60e51b815260206004820152605d60248201527f50726f6f664f66456666696369656e63793a3a70726f76654e6f6e446574657260448201527f6d696e697374696353746174653a2066696e616c4e65774261746368206d757360648201527f7420626520626967676572207468616e20696e69744e756d4261746368000000608482015260a401610994565b60695467ffffffffffffffff90811690871611156129315760405162461bcd60e51b815260206004820152606960248201527f50726f6f664f66456666696369656e63793a3a70726f76654e6f6e446574657260448201527f6d696e697374696353746174653a2066696e616c4e65774261746368206d757360648201527f74206265206c657373206f7220657175616c207468616e206c6173745665726960848201527f666965644261746368000000000000000000000000000000000000000000000060a482015260c401610994565b67ffffffffffffffff87166000908152606b60205260409020546129e35760405162461bcd60e51b815260206004820152605560248201527f50726f6f664f66456666696369656e63793a3a70726f76654e6f6e446574657260448201527f6d696e697374696353746174653a20696e69744e756d4261746368207374617460648201527f6520726f6f7420646f6573206e6f742065786973740000000000000000000000608482015260a401610994565b67ffffffffffffffff86166000908152606b6020526040902054612a955760405162461bcd60e51b815260206004820152605660248201527f50726f6f664f66456666696369656e63793a3a70726f76654e6f6e446574657260448201527f6d696e697374696353746174653a2066696e616c4e657742617463682073746160648201527f746520726f6f7420646f6573206e6f7420657869737400000000000000000000608482015260a401610994565b6000612aa388888888611ba9565b905060007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001600283604051612ad89190614eec565b602060405180830381855afa158015612af5573d6000803e3d6000fd5b5050506040513d601f19601f82011682018060405250810190612b189190614e1e565b612b229190614f37565b606c546040805160208101825283815290517f43753b4d00000000000000000000000000000000000000000000000000000000815292935073ffffffffffffffffffffffffffffffffffffffff909116916343753b4d91612b8c9189918991899190600401614f4b565b602060405180830381865afa158015612ba9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bcd9190614fc5565b612c3f5760405162461bcd60e51b815260206004820152603c60248201527f50726f6f664f66456666696369656e63793a3a70726f76654e6f6e446574657260448201527f6d696e697374696353746174653a20494e56414c49445f50524f4f46000000006064820152608401610994565b67ffffffffffffffff88166000908152606b6020526040902054869003612cf45760405162461bcd60e51b815260206004820152606060248201527f50726f6f664f66456666696369656e63793a3a70726f76654e6f6e446574657260448201527f6d696e697374696353746174653a2073746f72656420726f6f74206d7573742060648201527f626520646966666572656e74207468616e206e657720737461746520726f6f74608482015260a401610994565b67ffffffffffffffff88166000908152606b60209081526040918290205482519081529081018890527f10b370e2afd2be06fe3170fec9cb3bbd87233f3deb63d488c0dde59813afdabe910160405180910390a1612d50613f37565b505050505050505050565b60695468010000000000000000900473ffffffffffffffffffffffffffffffffffffffff163314612df45760405162461bcd60e51b815260206004820152603f60248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7954727573746564536560448201527f7175656e6365723a206f6e6c7920747275737465642073657175656e636572006064820152608401610994565b606d612e00828261505c565b507f6b8f723a4c7a5335cafae8a598a0aa0301be1387c037dccc085b62add6448b2081604051610a0c919061460e565b60695460009067ffffffffffffffff868116911614612edd5760405162461bcd60e51b815260206004820152604160248201527f50726f6f664f66456666696369656e63793a3a76657269667942617463683a2060448201527f5f6c6173745665726966696564426174636820646f6573206e6f74206d61746360648201527f6800000000000000000000000000000000000000000000000000000000000000608482015260a401610994565b8467ffffffffffffffff168467ffffffffffffffff1611612f8c5760405162461bcd60e51b815260206004820152605660248201527f50726f6f664f66456666696369656e63793a3a76657269667942617463683a2060448201527f6e657756657269666965644261746368206d757374206265206269676765722060648201527f7468616e206c6173745665726966696564426174636800000000000000000000608482015260a401610994565b60685467ffffffffffffffff68010000000000000000909104811690851611156130445760405162461bcd60e51b815260206004820152604260248201527f50726f6f664f66456666696369656e63793a3a76657269667942617463683a2060448201527f626174636820646f6573206e6f742068617665206265656e2073657175656e6360648201527f6564000000000000000000000000000000000000000000000000000000000000608482015260a401610994565b600061305286868686611ba9565b905060007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000016002836040516130879190614eec565b602060405180830381855afa1580156130a4573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906130c79190614e1e565b6130d19190614f37565b979650505050505050565b60655460ff161561317b5760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a401610994565b6069547c0100000000000000000000000000000000000000000000000000000000900460ff16151560011461323e5760405162461bcd60e51b815260206004820152604860248201527f50726f6f664f66456666696369656e63793a3a6973466f72636542617463684160448201527f6c6c6f7765643a206f6e6c7920696620666f726365206261746368206973206160648201527f7661696c61626c65000000000000000000000000000000000000000000000000608482015260a401610994565b8051806132d95760405162461bcd60e51b815260206004820152604260248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365466f72636560448201527f42617463683a204d75737420666f726365206174206c6561737420312062617460648201527f6368000000000000000000000000000000000000000000000000000000000000608482015260a401610994565b60685467ffffffffffffffff7801000000000000000000000000000000000000000000000000820481169161332491849170010000000000000000000000000000000090041661516c565b11156133985760405162461bcd60e51b815260206004820152603a60248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365466f72636560448201527f42617463683a20466f72636520626174636820696e76616c69640000000000006064820152608401610994565b60685467ffffffffffffffff680100000000000000008204811660008181526067602052604081205491937001000000000000000000000000000000009004909216915b848110156136b15760008682815181106133f8576133f8614d99565b60200260200101519050838061340d90614df7565b825180516020918201208185015160408087015181519485019390935283015260c01b7fffffffffffffffff0000000000000000000000000000000000000000000000001660608201529095506000915060680160408051601f19818403018152918152815160209283012067ffffffffffffffff881660009081526066909352912054909150811461352e5760405162461bcd60e51b815260206004820152604760248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365466f72636560448201527f426174636865733a20466f7263656420626174636865732064617461206d757360648201527f74206d6174636800000000000000000000000000000000000000000000000000608482015260a401610994565b613539600188614e98565b83036135f7574262093a8083604001516135539190614fe2565b67ffffffffffffffff1611156135f75760405162461bcd60e51b815260206004820152604c60248201527f50726f6f664f66456666696369656e63793a3a73657175656e6365466f72636560448201527f42617463683a20466f72636564206261746368206973206e6f7420696e20746960648201527f6d656f757420706572696f640000000000000000000000000000000000000000608482015260a401610994565b8151805160209182012081840151604080519384018890528301919091526060808301919091524260c01b7fffffffffffffffff00000000000000000000000000000000000000000000000016608083015233901b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000166088820152609c01604051602081830303815290604052805190602001209350858061369990614df7565b965050505080806136a990614e37565b9150506133dc565b50606880544267ffffffffffffffff9081167fffffffffffffffffffffffffffffffff000000000000000000000000000000009092169190911768010000000000000000868316818102929092177fffffffffffffffff0000000000000000ffffffffffffffffffffffffffffffff1670010000000000000000000000000000000087851602178455600091825260676020526040808320869055935493519304909116917f648a61dd2438f072f5a1960939abd30f37aea80d2e94c9792ad142d3e0a490a49190a25050505050565b60655460ff166137f95760405162461bcd60e51b815260206004820152603b60248201527f456d657267656e63794d616e616765723a3a6966456d657267656e637953746160448201527f74653a206f6e6c7920696620656d657267656e637920737461746500000000006064820152608401610994565b60705473ffffffffffffffffffffffffffffffffffffffff1633146138865760405162461bcd60e51b815260206004820152603d60248201527f50726f6f664f66456666696369656e63793a3a6f6e6c7953656375726974794360448201527f6f756e63696c3a206f6e6c7920736563757269747920636f756e63696c0000006064820152608401610994565b607160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dbc169766040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156138f057600080fd5b505af1158015613904573d6000803e3d6000fd5b50505050610ac66141d7565b60655460ff16156139af5760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a401610994565b6069547c0100000000000000000000000000000000000000000000000000000000900460ff161515600114613a725760405162461bcd60e51b815260206004820152604860248201527f50726f6f664f66456666696369656e63793a3a6973466f72636542617463684160448201527f6c6c6f7765643a206f6e6c7920696620666f726365206261746368206973206160648201527f7661696c61626c65000000000000000000000000000000000000000000000000608482015260a401610994565b6000613a7c612049565b905081811115613af45760405162461bcd60e51b815260206004820152602f60248201527f50726f6f664f66456666696369656e63793a3a666f72636542617463683a206e60448201527f6f7420656e6f756768206d6174696300000000000000000000000000000000006064820152608401610994565b61ea60835110613b6c5760405162461bcd60e51b815260206004820152603a60248201527f50726f6f664f66456666696369656e63793a3a666f72636542617463683a205460448201527f72616e73616374696f6e73206279746573206f766572666c6f770000000000006064820152608401610994565b606554613b9690610100900473ffffffffffffffffffffffffffffffffffffffff16333084613fc1565b606a54604080517f3ed691ef000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff1691633ed691ef9160048083019260209291908290030181865afa158015613c06573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c2a9190614e1e565b60688054919250780100000000000000000000000000000000000000000000000090910467ffffffffffffffff16906018613c6483614df7565b91906101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505083805190602001208142604051602001613cdd93929190928352602083019190915260c01b7fffffffffffffffff00000000000000000000000000000000000000000000000016604082015260480190565b60408051808303601f1901815291815281516020928301206068547801000000000000000000000000000000000000000000000000900467ffffffffffffffff1660009081526066909352912055323303613dad57606854604080518381523360208201526060918101829052600091810191909152780100000000000000000000000000000000000000000000000090910467ffffffffffffffff16907ff94bb37db835f1ab585ee00041849a09b12cd081d77fa15ca070757619cbc9319060800160405180910390a2613e0a565b606860189054906101000a900467ffffffffffffffff1667ffffffffffffffff167ff94bb37db835f1ab585ee00041849a09b12cd081d77fa15ca070757619cbc931823387604051613e0193929190615184565b60405180910390a25b50505050565b613e18613ed0565b73ffffffffffffffffffffffffffffffffffffffff8116613ea15760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610994565b613eaa816140da565b50565b613eb5613ed0565b67ffffffffffffffff166000908152606b6020526040902055565b60335473ffffffffffffffffffffffffffffffffffffffff163314610ac65760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610994565b607160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632072f6c56040518163ffffffff1660e01b8152600401600060405180830381600087803b158015613fa157600080fd5b505af1158015613fb5573d6000803e3d6000fd5b50505050610ac66142a2565b60405173ffffffffffffffffffffffffffffffffffffffff80851660248301528316604482015260648101829052613e0a9085907f23b872dd00000000000000000000000000000000000000000000000000000000906084015b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152614397565b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526140d59084907fa9059cbb000000000000000000000000000000000000000000000000000000009060640161401b565b505050565b6033805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff166141ce5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610994565b610ac6336140da565b60655460ff1661424f5760405162461bcd60e51b815260206004820152603b60248201527f456d657267656e63794d616e616765723a3a6966456d657267656e637953746160448201527f74653a206f6e6c7920696620656d657267656e637920737461746500000000006064820152608401610994565b606580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690556040517f1e5e34eea33501aecf2ebec9fe0e884a40804275ea7fe10b2ba084c8374308b390600090a1565b60655460ff16156143415760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e63792073746160648201527f7465000000000000000000000000000000000000000000000000000000000000608482015260a401610994565b606580547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556040517f2261efe5aef6fedc1fd1550b25facc9181745623049c7901287030b9ad1a549790600090a1565b60006143f9826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166144899092919063ffffffff16565b8051909150156140d557808060200190518101906144179190614fc5565b6140d55760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610994565b6060611dd88484600085856000808673ffffffffffffffffffffffffffffffffffffffff1685876040516144bd9190614eec565b60006040518083038185875af1925050503d80600081146144fa576040519150601f19603f3d011682016040523d82523d6000602084013e6144ff565b606091505b50915091506130d187838387606083156145875782516000036145805773ffffffffffffffffffffffffffffffffffffffff85163b6145805760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610994565b5081611dd8565b611dd8838381511561459c5781518083602001fd5b8060405162461bcd60e51b8152600401610994919061460e565b60005b838110156145d15781810151838201526020016145b9565b83811115613e0a5750506000910152565b600081518084526145fa8160208601602086016145b6565b601f01601f19169290920160200192915050565b60208152600061462160208301846145e2565b9392505050565b803567ffffffffffffffff8116811461464057600080fd5b919050565b6000806040838503121561465857600080fd5b61466183614628565b946020939093013593505050565b73ffffffffffffffffffffffffffffffffffffffff81168114613eaa57600080fd5b80356146408161466f565b6000602082840312156146ae57600080fd5b81356146218161466f565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040516080810167ffffffffffffffff8111828210171561470b5761470b6146b9565b60405290565b6040516060810167ffffffffffffffff8111828210171561470b5761470b6146b9565b604051601f8201601f1916810167ffffffffffffffff8111828210171561475d5761475d6146b9565b604052919050565b600067ffffffffffffffff82111561477f5761477f6146b9565b5060051b60200190565b600082601f83011261479a57600080fd5b813567ffffffffffffffff8111156147b4576147b46146b9565b6147c76020601f19601f84011601614734565b8181528460208386010111156147dc57600080fd5b816020850160208301376000918101602001919091529392505050565b6000602080838503121561480c57600080fd5b823567ffffffffffffffff8082111561482457600080fd5b818501915085601f83011261483857600080fd5b813561484b61484682614765565b614734565b81815260059190911b8301840190848101908883111561486a57600080fd5b8585015b83811015614903578035858111156148865760008081fd5b86016080818c03601f190181131561489e5760008081fd5b6148a66146e8565b89830135888111156148b85760008081fd5b6148c68e8c83870101614789565b8252506040808401358b83015260606148e0818601614628565b828401526148ef848601614628565b90830152508552505091860191860161486e565b5098975050505050505050565b60006020828403121561492257600080fd5b61462182614628565b806040810183101561493c57600080fd5b92915050565b6000806000806000806000610180888a03121561495e57600080fd5b61496788614628565b965061497560208901614628565b955060408801359450606088013593506149928960808a0161492b565b92506101408801898111156149a657600080fd5b60c0890192506149b68a8261492b565b91505092959891949750929550565b600080600080600060a086880312156149dd57600080fd5b85359450602086013567ffffffffffffffff8111156149fb57600080fd5b614a0788828901614789565b94505060408601359250614a1d60608701614628565b91506080860135614a2d8161466f565b809150509295509295909350565b60008060008060808587031215614a5157600080fd5b614a5a85614628565b9350614a6860208601614628565b93969395505050506040820135916060013590565b8015158114613eaa57600080fd5b803561464081614a7d565b60008060008060008060008060008060006101608c8e031215614ab857600080fd5b614ac18c614691565b9a50614acf60208d01614691565b9950614add60408d01614691565b985060608c01359750614af260808d01614691565b9650614b0060a08d01614a8b565b955067ffffffffffffffff8060c08e01351115614b1c57600080fd5b614b2c8e60c08f01358f01614789565b9550614b3a60e08e01614628565b9450806101008e01351115614b4e57600080fd5b50614b608d6101008e01358e01614789565b9250614b6f6101208d01614691565b9150614b7e6101408d01614691565b90509295989b509295989b9093969950565b600060208284031215614ba257600080fd5b813561462181614a7d565b600060208284031215614bbf57600080fd5b813567ffffffffffffffff811115614bd657600080fd5b611dd884828501614789565b60006020808385031215614bf557600080fd5b823567ffffffffffffffff80821115614c0d57600080fd5b818501915085601f830112614c2157600080fd5b8135614c2f61484682614765565b81815260059190911b83018401908481019088831115614c4e57600080fd5b8585015b8381101561490357803585811115614c6a5760008081fd5b86016060818c03601f1901811315614c825760008081fd5b614c8a614711565b8983013588811115614c9c5760008081fd5b614caa8e8c83870101614789565b8252506040808401358b830152614cc2838501614628565b9082015285525050918601918601614c52565b60008060408385031215614ce857600080fd5b823567ffffffffffffffff811115614cff57600080fd5b614d0b85828601614789565b95602094909401359450505050565b60008060408385031215614d2d57600080fd5b82359150614d3d60208401614628565b90509250929050565b600181811c90821680614d5a57607f821691505b602082108103614d93577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600067ffffffffffffffff808316818103614e1457614e14614dc8565b6001019392505050565b600060208284031215614e3057600080fd5b5051919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203614e6857614e68614dc8565b5060010190565b600067ffffffffffffffff83811690831681811015614e9057614e90614dc8565b039392505050565b600082821015614eaa57614eaa614dc8565b500390565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614ee757614ee7614dc8565b500290565b60008251614efe8184602087016145b6565b9190910192915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600082614f4657614f46614f08565b500690565b61012081016040808784376000838201818152879190815b6002811015614f8357848483379084018281529284019290600101614f63565b5050828760c0870137610100850181815286935091505b6001811015614fb9578251825260209283019290910190600101614f9a565b50505095945050505050565b600060208284031215614fd757600080fd5b815161462181614a7d565b600067ffffffffffffffff80831681851680830382111561500557615005614dc8565b01949350505050565b601f8211156140d557600081815260208120601f850160051c810160208610156150355750805b601f850160051c820191505b8181101561505457828155600101615041565b505050505050565b815167ffffffffffffffff811115615076576150766146b9565b61508a816150848454614d46565b8461500e565b602080601f8311600181146150dd57600084156150a75750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b178555615054565b600085815260208120601f198616915b8281101561510c578886015182559484019460019091019084016150ed565b508582101561514857878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b60008261516757615167614f08565b500490565b6000821982111561517f5761517f614dc8565b500190565b83815273ffffffffffffffffffffffffffffffffffffffff831660208201526060604082015260006151b960608301846145e2565b9594505050505056fea2646970667358221220e08ced41d4270e65705ee9e498f554a781dd1c769981d219d457cb4ce80198e364736f6c634300080f0033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/compiled-contracts/TokenWrapped.json b/compiled-contracts/TokenWrapped.json index c2059e4d3..aa970f783 100644 --- a/compiled-contracts/TokenWrapped.json +++ b/compiled-contracts/TokenWrapped.json @@ -483,8 +483,8 @@ "type": "function" } ], - "bytecode": "0x60c06040523480156200001157600080fd5b5060405162001a7838038062001a788339810160408190526200003491620002ad565b82826003620000448382620003c1565b506004620000538282620003c1565b5050600580546001600160a81b0319163360ff60a01b191617600160a01b60ff851602179055504660808190526200008b9062000098565b60a052506200048d915050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f620000c562000146565b805160209182012060408051808201825260018152603160f81b90840152805192830193909352918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060820152608081018390523060a082015260c001604051602081830303815290604052805190602001209050919050565b606060038054620001579062000332565b80601f0160208091040260200160405190810160405280929190818152602001828054620001859062000332565b8015620001d65780601f10620001aa57610100808354040283529160200191620001d6565b820191906000526020600020905b815481529060010190602001808311620001b857829003601f168201915b5050505050905090565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200020857600080fd5b81516001600160401b0380821115620002255762000225620001e0565b604051601f8301601f19908116603f01168101908282118183101715620002505762000250620001e0565b816040528381526020925086838588010111156200026d57600080fd5b600091505b8382101562000291578582018301518183018401529082019062000272565b83821115620002a35760008385830101525b9695505050505050565b600080600060608486031215620002c357600080fd5b83516001600160401b0380821115620002db57600080fd5b620002e987838801620001f6565b945060208601519150808211156200030057600080fd5b506200030f86828701620001f6565b925050604084015160ff811681146200032757600080fd5b809150509250925092565b600181811c908216806200034757607f821691505b6020821081036200036857634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620003bc57600081815260208120601f850160051c81016020861015620003975750805b601f850160051c820191505b81811015620003b857828155600101620003a3565b5050505b505050565b81516001600160401b03811115620003dd57620003dd620001e0565b620003f581620003ee845462000332565b846200036e565b602080601f8311600181146200042d5760008415620004145750858301515b600019600386901b1c1916600185901b178555620003b8565b600085815260208120601f198616915b828110156200045e578886015182559484019460019091019084016200043d565b50858210156200047d5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60805160a0516115be620004ba600039600061053001526000818161036f01526104fa01526115be6000f3fe608060405234801561001057600080fd5b50600436106101775760003560e01c806370a08231116100d8578063a457c2d71161008c578063d505accf11610066578063d505accf14610391578063dd62ed3e146103a6578063ffa1ad74146103ec57600080fd5b8063a457c2d714610344578063a9059cbb14610357578063cd0d00961461036a57600080fd5b806395d89b41116100bd57806395d89b41146102e45780639dc29fac146102ec578063a3c573eb146102ff57600080fd5b806370a082311461028e5780637ecebe00146102c457600080fd5b806330adf81f1161012f5780633644e515116101145780633644e51514610260578063395093511461026857806340c10f191461027b57600080fd5b806330adf81f14610209578063313ce5671461023057600080fd5b806318160ddd1161016057806318160ddd146101bd57806320606b70146101cf57806323b872dd146101f657600080fd5b806306fdde031461017c578063095ea7b31461019a575b600080fd5b610184610428565b60405161019191906112d5565b60405180910390f35b6101ad6101a8366004611371565b6104ba565b6040519015158152602001610191565b6002545b604051908152602001610191565b6101c17f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81565b6101ad61020436600461139b565b6104d2565b6101c17f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b60055474010000000000000000000000000000000000000000900460ff1660405160ff9091168152602001610191565b6101c16104f6565b6101ad610276366004611371565b610552565b6101ad610289366004611371565b61059e565b6101c161029c3660046113d7565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6101c16102d23660046113d7565b60066020526000908152604090205481565b610184610645565b6101ad6102fa366004611371565b610654565b60055461031f9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610191565b6101ad610352366004611371565b6106ed565b6101ad610365366004611371565b6107a4565b6101c17f000000000000000000000000000000000000000000000000000000000000000081565b6103a461039f3660046113f9565b6107b2565b005b6101c16103b436600461146c565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6101846040518060400160405280600181526020017f310000000000000000000000000000000000000000000000000000000000000081525081565b6060600380546104379061149f565b80601f01602080910402602001604051908101604052809291908181526020018280546104639061149f565b80156104b05780601f10610485576101008083540402835291602001916104b0565b820191906000526020600020905b81548152906001019060200180831161049357829003601f168201915b5050505050905090565b6000336104c8818585610ab4565b5060019392505050565b6000336104e0858285610c34565b6104eb858585610cf1565b506001949350505050565b60007f0000000000000000000000000000000000000000000000000000000000000000461461052d5761052846610f56565b905090565b507f000000000000000000000000000000000000000000000000000000000000000090565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906104c89082908690610599908790611521565b610ab4565b60055460009073ffffffffffffffffffffffffffffffffffffffff1633146106325760405162461bcd60e51b8152602060048201526024808201527f546f6b656e577261707065643a3a6f6e6c794272696467653a204e4f545f425260448201527f494447450000000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b61063c838361101e565b50600192915050565b6060600480546104379061149f565b60055460009073ffffffffffffffffffffffffffffffffffffffff1633146106e35760405162461bcd60e51b8152602060048201526024808201527f546f6b656e577261707065643a3a6f6e6c794272696467653a204e4f545f425260448201527f49444745000000000000000000000000000000000000000000000000000000006064820152608401610629565b61063c8383611124565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190838110156107975760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f0000000000000000000000000000000000000000000000000000006064820152608401610629565b6104eb8286868403610ab4565b6000336104c8818585610cf1565b834211156108275760405162461bcd60e51b8152602060048201526024808201527f546f6b656e577261707065643a3a7065726d69743a204578706972656420706560448201527f726d6974000000000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff8716600090815260066020526040812080547f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918a918a918a91908661088183611539565b9091555060408051602081019690965273ffffffffffffffffffffffffffffffffffffffff94851690860152929091166060840152608083015260a082015260c0810186905260e00160405160208183030381529060405280519060200120905060006108ec6104f6565b6040517f19010000000000000000000000000000000000000000000000000000000000006020820152602281019190915260428101839052606201604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282528051602091820120600080855291840180845281905260ff89169284019290925260608301879052608083018690529092509060019060a0016020604051602081039080840390855afa1580156109b0573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811615801590610a2b57508973ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b610a9d5760405162461bcd60e51b815260206004820152602760248201527f546f6b656e577261707065643a3a7065726d69743a20496e76616c696420736960448201527f676e6174757265000000000000000000000000000000000000000000000000006064820152608401610629565b610aa88a8a8a610ab4565b50505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff8316610b3c5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff8216610bc55760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610ceb5781811015610cde5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610629565b610ceb8484848403610ab4565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610d7a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff8216610e035760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610e9f5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260208190526040808220858503905591851681529081208054849290610ee3908490611521565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610f4991815260200190565b60405180910390a3610ceb565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f610f81610428565b8051602091820120604080518082018252600181527f310000000000000000000000000000000000000000000000000000000000000090840152805192830193909352918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060820152608081018390523060a082015260c001604051602081830303815290604052805190602001209050919050565b73ffffffffffffffffffffffffffffffffffffffff82166110815760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610629565b80600260008282546110939190611521565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600090815260208190526040812080548392906110cd908490611521565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b73ffffffffffffffffffffffffffffffffffffffff82166111ad5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260208190526040902054818110156112495760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f63650000000000000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff83166000908152602081905260408120838303905560028054849290611285908490611571565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610c27565b600060208083528351808285015260005b81811015611302578581018301518582016040015282016112e6565b81811115611314576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461136c57600080fd5b919050565b6000806040838503121561138457600080fd5b61138d83611348565b946020939093013593505050565b6000806000606084860312156113b057600080fd5b6113b984611348565b92506113c760208501611348565b9150604084013590509250925092565b6000602082840312156113e957600080fd5b6113f282611348565b9392505050565b600080600080600080600060e0888a03121561141457600080fd5b61141d88611348565b965061142b60208901611348565b95506040880135945060608801359350608088013560ff8116811461144f57600080fd5b9699959850939692959460a0840135945060c09093013592915050565b6000806040838503121561147f57600080fd5b61148883611348565b915061149660208401611348565b90509250929050565b600181811c908216806114b357607f821691505b6020821081036114ec577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008219821115611534576115346114f2565b500190565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361156a5761156a6114f2565b5060010190565b600082821015611583576115836114f2565b50039056fea2646970667358221220dc9c54325b6ec8c11c8bc6a1630cfb64202b6d54611cd1004e705ceca7826a4f64736f6c634300080f0033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101775760003560e01c806370a08231116100d8578063a457c2d71161008c578063d505accf11610066578063d505accf14610391578063dd62ed3e146103a6578063ffa1ad74146103ec57600080fd5b8063a457c2d714610344578063a9059cbb14610357578063cd0d00961461036a57600080fd5b806395d89b41116100bd57806395d89b41146102e45780639dc29fac146102ec578063a3c573eb146102ff57600080fd5b806370a082311461028e5780637ecebe00146102c457600080fd5b806330adf81f1161012f5780633644e515116101145780633644e51514610260578063395093511461026857806340c10f191461027b57600080fd5b806330adf81f14610209578063313ce5671461023057600080fd5b806318160ddd1161016057806318160ddd146101bd57806320606b70146101cf57806323b872dd146101f657600080fd5b806306fdde031461017c578063095ea7b31461019a575b600080fd5b610184610428565b60405161019191906112d5565b60405180910390f35b6101ad6101a8366004611371565b6104ba565b6040519015158152602001610191565b6002545b604051908152602001610191565b6101c17f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81565b6101ad61020436600461139b565b6104d2565b6101c17f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b60055474010000000000000000000000000000000000000000900460ff1660405160ff9091168152602001610191565b6101c16104f6565b6101ad610276366004611371565b610552565b6101ad610289366004611371565b61059e565b6101c161029c3660046113d7565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6101c16102d23660046113d7565b60066020526000908152604090205481565b610184610645565b6101ad6102fa366004611371565b610654565b60055461031f9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610191565b6101ad610352366004611371565b6106ed565b6101ad610365366004611371565b6107a4565b6101c17f000000000000000000000000000000000000000000000000000000000000000081565b6103a461039f3660046113f9565b6107b2565b005b6101c16103b436600461146c565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6101846040518060400160405280600181526020017f310000000000000000000000000000000000000000000000000000000000000081525081565b6060600380546104379061149f565b80601f01602080910402602001604051908101604052809291908181526020018280546104639061149f565b80156104b05780601f10610485576101008083540402835291602001916104b0565b820191906000526020600020905b81548152906001019060200180831161049357829003601f168201915b5050505050905090565b6000336104c8818585610ab4565b5060019392505050565b6000336104e0858285610c34565b6104eb858585610cf1565b506001949350505050565b60007f0000000000000000000000000000000000000000000000000000000000000000461461052d5761052846610f56565b905090565b507f000000000000000000000000000000000000000000000000000000000000000090565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906104c89082908690610599908790611521565b610ab4565b60055460009073ffffffffffffffffffffffffffffffffffffffff1633146106325760405162461bcd60e51b8152602060048201526024808201527f546f6b656e577261707065643a3a6f6e6c794272696467653a204e4f545f425260448201527f494447450000000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b61063c838361101e565b50600192915050565b6060600480546104379061149f565b60055460009073ffffffffffffffffffffffffffffffffffffffff1633146106e35760405162461bcd60e51b8152602060048201526024808201527f546f6b656e577261707065643a3a6f6e6c794272696467653a204e4f545f425260448201527f49444745000000000000000000000000000000000000000000000000000000006064820152608401610629565b61063c8383611124565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190838110156107975760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f0000000000000000000000000000000000000000000000000000006064820152608401610629565b6104eb8286868403610ab4565b6000336104c8818585610cf1565b834211156108275760405162461bcd60e51b8152602060048201526024808201527f546f6b656e577261707065643a3a7065726d69743a204578706972656420706560448201527f726d6974000000000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff8716600090815260066020526040812080547f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918a918a918a91908661088183611539565b9091555060408051602081019690965273ffffffffffffffffffffffffffffffffffffffff94851690860152929091166060840152608083015260a082015260c0810186905260e00160405160208183030381529060405280519060200120905060006108ec6104f6565b6040517f19010000000000000000000000000000000000000000000000000000000000006020820152602281019190915260428101839052606201604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282528051602091820120600080855291840180845281905260ff89169284019290925260608301879052608083018690529092509060019060a0016020604051602081039080840390855afa1580156109b0573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811615801590610a2b57508973ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b610a9d5760405162461bcd60e51b815260206004820152602760248201527f546f6b656e577261707065643a3a7065726d69743a20496e76616c696420736960448201527f676e6174757265000000000000000000000000000000000000000000000000006064820152608401610629565b610aa88a8a8a610ab4565b50505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff8316610b3c5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff8216610bc55760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610ceb5781811015610cde5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610629565b610ceb8484848403610ab4565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610d7a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff8216610e035760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610e9f5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260208190526040808220858503905591851681529081208054849290610ee3908490611521565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610f4991815260200190565b60405180910390a3610ceb565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f610f81610428565b8051602091820120604080518082018252600181527f310000000000000000000000000000000000000000000000000000000000000090840152805192830193909352918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060820152608081018390523060a082015260c001604051602081830303815290604052805190602001209050919050565b73ffffffffffffffffffffffffffffffffffffffff82166110815760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610629565b80600260008282546110939190611521565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600090815260208190526040812080548392906110cd908490611521565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b73ffffffffffffffffffffffffffffffffffffffff82166111ad5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260208190526040902054818110156112495760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f63650000000000000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff83166000908152602081905260408120838303905560028054849290611285908490611571565b909155505060405182815260009073ffffffffffffffffffffffffffffffffffffffff8516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610c27565b600060208083528351808285015260005b81811015611302578581018301518582016040015282016112e6565b81811115611314576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461136c57600080fd5b919050565b6000806040838503121561138457600080fd5b61138d83611348565b946020939093013593505050565b6000806000606084860312156113b057600080fd5b6113b984611348565b92506113c760208501611348565b9150604084013590509250925092565b6000602082840312156113e957600080fd5b6113f282611348565b9392505050565b600080600080600080600060e0888a03121561141457600080fd5b61141d88611348565b965061142b60208901611348565b95506040880135945060608801359350608088013560ff8116811461144f57600080fd5b9699959850939692959460a0840135945060c09093013592915050565b6000806040838503121561147f57600080fd5b61148883611348565b915061149660208401611348565b90509250929050565b600181811c908216806114b357607f821691505b6020821081036114ec577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008219821115611534576115346114f2565b500190565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361156a5761156a6114f2565b5060010190565b600082821015611583576115836114f2565b50039056fea2646970667358221220dc9c54325b6ec8c11c8bc6a1630cfb64202b6d54611cd1004e705ceca7826a4f64736f6c634300080f0033", + "bytecode": "0x60c06040523480156200001157600080fd5b50604051620019c7380380620019c78339810160408190526200003491620002ad565b82826003620000448382620003c1565b506004620000538282620003c1565b5050600580546001600160a81b0319163360ff60a01b191617600160a01b60ff851602179055504660808190526200008b9062000098565b60a052506200048d915050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f620000c562000146565b805160209182012060408051808201825260018152603160f81b90840152805192830193909352918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060820152608081018390523060a082015260c001604051602081830303815290604052805190602001209050919050565b606060038054620001579062000332565b80601f0160208091040260200160405190810160405280929190818152602001828054620001859062000332565b8015620001d65780601f10620001aa57610100808354040283529160200191620001d6565b820191906000526020600020905b815481529060010190602001808311620001b857829003601f168201915b5050505050905090565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200020857600080fd5b81516001600160401b0380821115620002255762000225620001e0565b604051601f8301601f19908116603f01168101908282118183101715620002505762000250620001e0565b816040528381526020925086838588010111156200026d57600080fd5b600091505b8382101562000291578582018301518183018401529082019062000272565b83821115620002a35760008385830101525b9695505050505050565b600080600060608486031215620002c357600080fd5b83516001600160401b0380821115620002db57600080fd5b620002e987838801620001f6565b945060208601519150808211156200030057600080fd5b506200030f86828701620001f6565b925050604084015160ff811681146200032757600080fd5b809150509250925092565b600181811c908216806200034757607f821691505b6020821081036200036857634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620003bc57600081815260208120601f850160051c81016020861015620003975750805b601f850160051c820191505b81811015620003b857828155600101620003a3565b5050505b505050565b81516001600160401b03811115620003dd57620003dd620001e0565b620003f581620003ee845462000332565b846200036e565b602080601f8311600181146200042d5760008415620004145750858301515b600019600386901b1c1916600185901b178555620003b8565b600085815260208120601f198616915b828110156200045e578886015182559484019460019091019084016200043d565b50858210156200047d5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60805160a05161150d620004ba600039600061053001526000818161036f01526104fa015261150d6000f3fe608060405234801561001057600080fd5b50600436106101775760003560e01c806370a08231116100d8578063a457c2d71161008c578063d505accf11610066578063d505accf14610391578063dd62ed3e146103a6578063ffa1ad74146103ec57600080fd5b8063a457c2d714610344578063a9059cbb14610357578063cd0d00961461036a57600080fd5b806395d89b41116100bd57806395d89b41146102e45780639dc29fac146102ec578063a3c573eb146102ff57600080fd5b806370a082311461028e5780637ecebe00146102c457600080fd5b806330adf81f1161012f5780633644e515116101145780633644e51514610260578063395093511461026857806340c10f191461027b57600080fd5b806330adf81f14610209578063313ce5671461023057600080fd5b806318160ddd1161016057806318160ddd146101bd57806320606b70146101cf57806323b872dd146101f657600080fd5b806306fdde031461017c578063095ea7b31461019a575b600080fd5b610184610428565b604051610191919061123b565b60405180910390f35b6101ad6101a83660046112d7565b6104ba565b6040519015158152602001610191565b6002545b604051908152602001610191565b6101c17f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81565b6101ad610204366004611301565b6104d2565b6101c17f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b60055474010000000000000000000000000000000000000000900460ff1660405160ff9091168152602001610191565b6101c16104f6565b6101ad6102763660046112d7565b610552565b6101ad6102893660046112d7565b61059e565b6101c161029c36600461133d565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6101c16102d236600461133d565b60066020526000908152604090205481565b610184610645565b6101ad6102fa3660046112d7565b610654565b60055461031f9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610191565b6101ad6103523660046112d7565b6106ed565b6101ad6103653660046112d7565b6107a4565b6101c17f000000000000000000000000000000000000000000000000000000000000000081565b6103a461039f36600461135f565b6107b2565b005b6101c16103b43660046113d2565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6101846040518060400160405280600181526020017f310000000000000000000000000000000000000000000000000000000000000081525081565b60606003805461043790611405565b80601f016020809104026020016040519081016040528092919081815260200182805461046390611405565b80156104b05780601f10610485576101008083540402835291602001916104b0565b820191906000526020600020905b81548152906001019060200180831161049357829003601f168201915b5050505050905090565b6000336104c8818585610ab4565b5060019392505050565b6000336104e0858285610c34565b6104eb858585610cf1565b506001949350505050565b60007f0000000000000000000000000000000000000000000000000000000000000000461461052d5761052846610f12565b905090565b507f000000000000000000000000000000000000000000000000000000000000000090565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906104c89082908690610599908790611487565b610ab4565b60055460009073ffffffffffffffffffffffffffffffffffffffff1633146106325760405162461bcd60e51b8152602060048201526024808201527f546f6b656e577261707065643a3a6f6e6c794272696467653a204e4f545f425260448201527f494447450000000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b61063c8383610fda565b50600192915050565b60606004805461043790611405565b60055460009073ffffffffffffffffffffffffffffffffffffffff1633146106e35760405162461bcd60e51b8152602060048201526024808201527f546f6b656e577261707065643a3a6f6e6c794272696467653a204e4f545f425260448201527f49444745000000000000000000000000000000000000000000000000000000006064820152608401610629565b61063c83836110b3565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190838110156107975760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f0000000000000000000000000000000000000000000000000000006064820152608401610629565b6104eb8286868403610ab4565b6000336104c8818585610cf1565b834211156108275760405162461bcd60e51b8152602060048201526024808201527f546f6b656e577261707065643a3a7065726d69743a204578706972656420706560448201527f726d6974000000000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff8716600090815260066020526040812080547f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918a918a918a9190866108818361149f565b9091555060408051602081019690965273ffffffffffffffffffffffffffffffffffffffff94851690860152929091166060840152608083015260a082015260c0810186905260e00160405160208183030381529060405280519060200120905060006108ec6104f6565b6040517f19010000000000000000000000000000000000000000000000000000000000006020820152602281019190915260428101839052606201604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282528051602091820120600080855291840180845281905260ff89169284019290925260608301879052608083018690529092509060019060a0016020604051602081039080840390855afa1580156109b0573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811615801590610a2b57508973ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b610a9d5760405162461bcd60e51b815260206004820152602760248201527f546f6b656e577261707065643a3a7065726d69743a20496e76616c696420736960448201527f676e6174757265000000000000000000000000000000000000000000000000006064820152608401610629565b610aa88a8a8a610ab4565b50505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff8316610b3c5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff8216610bc55760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610ceb5781811015610cde5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610629565b610ceb8484848403610ab4565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610d7a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff8216610e035760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610e9f5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610ceb565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f610f3d610428565b8051602091820120604080518082018252600181527f310000000000000000000000000000000000000000000000000000000000000090840152805192830193909352918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060820152608081018390523060a082015260c001604051602081830303815290604052805190602001209050919050565b73ffffffffffffffffffffffffffffffffffffffff821661103d5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610629565b806002600082825461104f9190611487565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b73ffffffffffffffffffffffffffffffffffffffff821661113c5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260208190526040902054818110156111d85760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f63650000000000000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff83166000818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101610c27565b600060208083528351808285015260005b818110156112685785810183015185820160400152820161124c565b8181111561127a576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146112d257600080fd5b919050565b600080604083850312156112ea57600080fd5b6112f3836112ae565b946020939093013593505050565b60008060006060848603121561131657600080fd5b61131f846112ae565b925061132d602085016112ae565b9150604084013590509250925092565b60006020828403121561134f57600080fd5b611358826112ae565b9392505050565b600080600080600080600060e0888a03121561137a57600080fd5b611383886112ae565b9650611391602089016112ae565b95506040880135945060608801359350608088013560ff811681146113b557600080fd5b9699959850939692959460a0840135945060c09093013592915050565b600080604083850312156113e557600080fd5b6113ee836112ae565b91506113fc602084016112ae565b90509250929050565b600181811c9082168061141957607f821691505b602082108103611452577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000821982111561149a5761149a611458565b500190565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036114d0576114d0611458565b506001019056fea264697066735822122094134962e5fa2f6357086a2590b7f3a754d340b16e5312664d82a308bc23a0df64736f6c634300080f0033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101775760003560e01c806370a08231116100d8578063a457c2d71161008c578063d505accf11610066578063d505accf14610391578063dd62ed3e146103a6578063ffa1ad74146103ec57600080fd5b8063a457c2d714610344578063a9059cbb14610357578063cd0d00961461036a57600080fd5b806395d89b41116100bd57806395d89b41146102e45780639dc29fac146102ec578063a3c573eb146102ff57600080fd5b806370a082311461028e5780637ecebe00146102c457600080fd5b806330adf81f1161012f5780633644e515116101145780633644e51514610260578063395093511461026857806340c10f191461027b57600080fd5b806330adf81f14610209578063313ce5671461023057600080fd5b806318160ddd1161016057806318160ddd146101bd57806320606b70146101cf57806323b872dd146101f657600080fd5b806306fdde031461017c578063095ea7b31461019a575b600080fd5b610184610428565b604051610191919061123b565b60405180910390f35b6101ad6101a83660046112d7565b6104ba565b6040519015158152602001610191565b6002545b604051908152602001610191565b6101c17f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81565b6101ad610204366004611301565b6104d2565b6101c17f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b60055474010000000000000000000000000000000000000000900460ff1660405160ff9091168152602001610191565b6101c16104f6565b6101ad6102763660046112d7565b610552565b6101ad6102893660046112d7565b61059e565b6101c161029c36600461133d565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b6101c16102d236600461133d565b60066020526000908152604090205481565b610184610645565b6101ad6102fa3660046112d7565b610654565b60055461031f9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610191565b6101ad6103523660046112d7565b6106ed565b6101ad6103653660046112d7565b6107a4565b6101c17f000000000000000000000000000000000000000000000000000000000000000081565b6103a461039f36600461135f565b6107b2565b005b6101c16103b43660046113d2565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b6101846040518060400160405280600181526020017f310000000000000000000000000000000000000000000000000000000000000081525081565b60606003805461043790611405565b80601f016020809104026020016040519081016040528092919081815260200182805461046390611405565b80156104b05780601f10610485576101008083540402835291602001916104b0565b820191906000526020600020905b81548152906001019060200180831161049357829003601f168201915b5050505050905090565b6000336104c8818585610ab4565b5060019392505050565b6000336104e0858285610c34565b6104eb858585610cf1565b506001949350505050565b60007f0000000000000000000000000000000000000000000000000000000000000000461461052d5761052846610f12565b905090565b507f000000000000000000000000000000000000000000000000000000000000000090565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff871684529091528120549091906104c89082908690610599908790611487565b610ab4565b60055460009073ffffffffffffffffffffffffffffffffffffffff1633146106325760405162461bcd60e51b8152602060048201526024808201527f546f6b656e577261707065643a3a6f6e6c794272696467653a204e4f545f425260448201527f494447450000000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b61063c8383610fda565b50600192915050565b60606004805461043790611405565b60055460009073ffffffffffffffffffffffffffffffffffffffff1633146106e35760405162461bcd60e51b8152602060048201526024808201527f546f6b656e577261707065643a3a6f6e6c794272696467653a204e4f545f425260448201527f49444745000000000000000000000000000000000000000000000000000000006064820152608401610629565b61063c83836110b3565b33600081815260016020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152812054909190838110156107975760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f0000000000000000000000000000000000000000000000000000006064820152608401610629565b6104eb8286868403610ab4565b6000336104c8818585610cf1565b834211156108275760405162461bcd60e51b8152602060048201526024808201527f546f6b656e577261707065643a3a7065726d69743a204578706972656420706560448201527f726d6974000000000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff8716600090815260066020526040812080547f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918a918a918a9190866108818361149f565b9091555060408051602081019690965273ffffffffffffffffffffffffffffffffffffffff94851690860152929091166060840152608083015260a082015260c0810186905260e00160405160208183030381529060405280519060200120905060006108ec6104f6565b6040517f19010000000000000000000000000000000000000000000000000000000000006020820152602281019190915260428101839052606201604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181528282528051602091820120600080855291840180845281905260ff89169284019290925260608301879052608083018690529092509060019060a0016020604051602081039080840390855afa1580156109b0573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811615801590610a2b57508973ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b610a9d5760405162461bcd60e51b815260206004820152602760248201527f546f6b656e577261707065643a3a7065726d69743a20496e76616c696420736960448201527f676e6174757265000000000000000000000000000000000000000000000000006064820152608401610629565b610aa88a8a8a610ab4565b50505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff8316610b3c5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff8216610bc55760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff83811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600160209081526040808320938616835292905220547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610ceb5781811015610cde5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610629565b610ceb8484848403610ab4565b50505050565b73ffffffffffffffffffffffffffffffffffffffff8316610d7a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff8216610e035760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff831660009081526020819052604090205481811015610e9f5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610ceb565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f610f3d610428565b8051602091820120604080518082018252600181527f310000000000000000000000000000000000000000000000000000000000000090840152805192830193909352918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060820152608081018390523060a082015260c001604051602081830303815290604052805190602001209050919050565b73ffffffffffffffffffffffffffffffffffffffff821661103d5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610629565b806002600082825461104f9190611487565b909155505073ffffffffffffffffffffffffffffffffffffffff8216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b73ffffffffffffffffffffffffffffffffffffffff821661113c5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260208190526040902054818110156111d85760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f63650000000000000000000000000000000000000000000000000000000000006064820152608401610629565b73ffffffffffffffffffffffffffffffffffffffff83166000818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9101610c27565b600060208083528351808285015260005b818110156112685785810183015185820160400152820161124c565b8181111561127a576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b803573ffffffffffffffffffffffffffffffffffffffff811681146112d257600080fd5b919050565b600080604083850312156112ea57600080fd5b6112f3836112ae565b946020939093013593505050565b60008060006060848603121561131657600080fd5b61131f846112ae565b925061132d602085016112ae565b9150604084013590509250925092565b60006020828403121561134f57600080fd5b611358826112ae565b9392505050565b600080600080600080600060e0888a03121561137a57600080fd5b611383886112ae565b9650611391602089016112ae565b95506040880135945060608801359350608088013560ff811681146113b557600080fd5b9699959850939692959460a0840135945060c09093013592915050565b600080604083850312156113e557600080fd5b6113ee836112ae565b91506113fc602084016112ae565b90509250929050565b600181811c9082168061141957607f821691505b602082108103611452577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000821982111561149a5761149a611458565b500190565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036114d0576114d0611458565b506001019056fea264697066735822122094134962e5fa2f6357086a2590b7f3a754d340b16e5312664d82a308bc23a0df64736f6c634300080f0033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/compiled-contracts/Verifier.json b/compiled-contracts/Verifier.json index 9ac689d46..f658d4998 100644 --- a/compiled-contracts/Verifier.json +++ b/compiled-contracts/Verifier.json @@ -38,8 +38,8 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b50610f6a806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c806343753b4d14610030575b600080fd5b61012c600480360361012081101561004757600080fd5b6040805180820182529183019291818301918390600290839083908082843760009201829052506040805180820190915293969594608081019493509150600290835b828210156100c8576040805180820182529080840286019060029083908390808284376000920191909152505050815260019091019060200161008a565b5050604080518082018252939695948181019493509150600290839083908082843760009201919091525050604080516020818101909252929594938181019392509060019083908390808284376000920191909152509194506101409350505050565b604080519115158252519081900360200190f35b600061014a610e09565b6040805180820182528751815260208089015181830152908352815160808101835287515181840190815288518301516060808401919091529082528351808501855289840180515182525184015181850152828401528483019190915282518084018452875181528783015181840152848401528251600180825281850190945290929091828101908036833701905050905060005b600181101561021a578481600181106101f657fe5b602002015182828151811061020757fe5b60209081029190910101526001016101e1565b506102258183610243565b6102345760019250505061023b565b6000925050505b949350505050565b60007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000161026e610e3b565b61027661045a565b90508060800151518551600101146102ef57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f76657269666965722d6261642d696e7075740000000000000000000000000000604482015290519081900360640190fd5b6102f7610e82565b50604080518082019091526000808252602082018190525b86518110156103e3578387828151811061032557fe5b60200260200101511061039957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f76657269666965722d6774652d736e61726b2d7363616c61722d6669656c6400604482015290519081900360640190fd5b6103d9826103d4856080015184600101815181106103b357fe5b60200260200101518a85815181106103c757fe5b60200260200101516107db565b610895565b915060010161030f565b506104068183608001516000815181106103f957fe5b6020026020010151610895565b905061043c610418866000015161094b565b8660200151846000015185602001518587604001518b6040015189606001516109d7565b61044c5760019350505050610454565b600093505050505b92915050565b610462610e3b565b6040805180820182527f2d4d9aa7e302d9df41749d5507949d05dbea33fbb16c643b22f599a2be6df2e281527f14bedd503c37ceb061d8ec60209fe345ce89830a19230301f076caff004d19266020808301919091529083528151608080820184527f0967032fcbf776d1afc985f88877f182d38480a653f2decaa9794cbc3bf3060c8285019081527f0e187847ad4c798374d0d6732bf501847dd68bc0e071241e0213bc7fc13db7ab606080850191909152908352845180860186527f304cfbd1e08a704a99f5e847d93f8c3caafddec46b7a0d379da69a4d112346a781527f1739c1b1a457a8c7313123d24d2f9192f896b7c63eea05a9d57f06547ad0cec8818601528385015285840192909252835180820185527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c28186019081527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed828501528152845180860186527f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b81527f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa818601528185015285850152835190810184527f0b6c455a7409441597236351cc9b3820c78b453bcf684be41b138ee35e2999e78185019081527f25eaa70ebbee7f72a4ff6bd186a2bd03d2aa94a38e3f177169edd16e58f96cb1828401528152835180850185527f0d2859dcef884436015a427d6d371c5c935d13ed24eef9f9c4ddc310c66b74bf81527f1c956f84580110eae3c13cd60f2dec6a2ca632f596101bf7db477543daa3db1c818501528184015281850152825160028082529181019093529082015b6106e3610e82565b8152602001906001900390816106db57505060808201908152604080518082019091527f1b14ccd8ecada725463ff917550a6ff911c78396ed48e2f5bd2e1b6b5015e43181527f26a9b3dd6cfd45d98f7fc6fca79577ee07a2d8899d87b2efd5cb63d40b90ec2260208201529051805160009061075c57fe5b602002602001018190525060405180604001604052807f22c24f7779cd44fa8bad17df8e601b7b2d948320d25830cd4b2097ae59a0db5681526020017f1e28066a7dc90ebe7f16a9db9e5e50d480ac009ee7deb7fb076903d4571c4d5f81525081608001516001815181106107cd57fe5b602002602001018190525090565b6107e3610e82565b6107eb610e9c565b835181526020808501519082015260408101839052600060608360808460076107d05a03fa905080801561081e57610820565bfe5b508061088d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f70616972696e672d6d756c2d6661696c65640000000000000000000000000000604482015290519081900360640190fd5b505092915050565b61089d610e82565b6108a5610eba565b8351815260208085015181830152835160408301528301516060808301919091526000908360c08460066107d05a03fa905080801561081e57508061088d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f70616972696e672d6164642d6661696c65640000000000000000000000000000604482015290519081900360640190fd5b610953610e82565b81517f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd479015801561098657506020830151155b156109a657505060408051808201909152600080825260208201526109d2565b604051806040016040528084600001518152602001828560200151816109c857fe5b0683038152509150505b919050565b60408051600480825260a0820190925260009160609190816020015b6109fb610e82565b8152602001906001900390816109f357505060408051600480825260a0820190925291925060609190602082015b610a31610ed8565b815260200190600190039081610a295790505090508a82600081518110610a5457fe5b60200260200101819052508882600181518110610a6d57fe5b60200260200101819052508682600281518110610a8657fe5b60200260200101819052508482600381518110610a9f57fe5b60200260200101819052508981600081518110610ab857fe5b60200260200101819052508781600181518110610ad157fe5b60200260200101819052508581600281518110610aea57fe5b60200260200101819052508381600381518110610b0357fe5b6020026020010181905250610b188282610b27565b9b9a5050505050505050505050565b60008151835114610b9957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f70616972696e672d6c656e677468732d6661696c656400000000000000000000604482015290519081900360640190fd5b82516006810260608167ffffffffffffffff81118015610bb857600080fd5b50604051908082528060200260200182016040528015610be2578160200160208202803683370190505b50905060005b83811015610d6757868181518110610bfc57fe5b602002602001015160000151828260060260000181518110610c1a57fe5b602002602001018181525050868181518110610c3257fe5b602002602001015160200151828260060260010181518110610c5057fe5b602002602001018181525050858181518110610c6857fe5b602090810291909101015151518251839060026006850201908110610c8957fe5b602002602001018181525050858181518110610ca157fe5b60209081029190910101515160016020020151828260060260030181518110610cc657fe5b602002602001018181525050858181518110610cde57fe5b602002602001015160200151600060028110610cf657fe5b6020020151828260060260040181518110610d0d57fe5b602002602001018181525050858181518110610d2557fe5b602002602001015160200151600160028110610d3d57fe5b6020020151828260060260050181518110610d5457fe5b6020908102919091010152600101610be8565b50610d70610ef8565b6000602082602086026020860160086107d05a03fa905080801561081e575080610dfb57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f70616972696e672d6f70636f64652d6661696c65640000000000000000000000604482015290519081900360640190fd5b505115159695505050505050565b6040518060600160405280610e1c610e82565b8152602001610e29610ed8565b8152602001610e36610e82565b905290565b6040518060a00160405280610e4e610e82565b8152602001610e5b610ed8565b8152602001610e68610ed8565b8152602001610e75610ed8565b8152602001606081525090565b604051806040016040528060008152602001600081525090565b60405180606001604052806003906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b6040518060400160405280610eeb610f16565b8152602001610e36610f16565b60405180602001604052806001906020820280368337509192915050565b6040518060400160405280600290602082028036833750919291505056fea26469706673582212204487892e304acb994c5d5b9cb868fea63f7402b83c7257de032d2b26011d688464736f6c634300060b0033", - "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061002b5760003560e01c806343753b4d14610030575b600080fd5b61012c600480360361012081101561004757600080fd5b6040805180820182529183019291818301918390600290839083908082843760009201829052506040805180820190915293969594608081019493509150600290835b828210156100c8576040805180820182529080840286019060029083908390808284376000920191909152505050815260019091019060200161008a565b5050604080518082018252939695948181019493509150600290839083908082843760009201919091525050604080516020818101909252929594938181019392509060019083908390808284376000920191909152509194506101409350505050565b604080519115158252519081900360200190f35b600061014a610e09565b6040805180820182528751815260208089015181830152908352815160808101835287515181840190815288518301516060808401919091529082528351808501855289840180515182525184015181850152828401528483019190915282518084018452875181528783015181840152848401528251600180825281850190945290929091828101908036833701905050905060005b600181101561021a578481600181106101f657fe5b602002015182828151811061020757fe5b60209081029190910101526001016101e1565b506102258183610243565b6102345760019250505061023b565b6000925050505b949350505050565b60007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000161026e610e3b565b61027661045a565b90508060800151518551600101146102ef57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f76657269666965722d6261642d696e7075740000000000000000000000000000604482015290519081900360640190fd5b6102f7610e82565b50604080518082019091526000808252602082018190525b86518110156103e3578387828151811061032557fe5b60200260200101511061039957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f76657269666965722d6774652d736e61726b2d7363616c61722d6669656c6400604482015290519081900360640190fd5b6103d9826103d4856080015184600101815181106103b357fe5b60200260200101518a85815181106103c757fe5b60200260200101516107db565b610895565b915060010161030f565b506104068183608001516000815181106103f957fe5b6020026020010151610895565b905061043c610418866000015161094b565b8660200151846000015185602001518587604001518b6040015189606001516109d7565b61044c5760019350505050610454565b600093505050505b92915050565b610462610e3b565b6040805180820182527f2d4d9aa7e302d9df41749d5507949d05dbea33fbb16c643b22f599a2be6df2e281527f14bedd503c37ceb061d8ec60209fe345ce89830a19230301f076caff004d19266020808301919091529083528151608080820184527f0967032fcbf776d1afc985f88877f182d38480a653f2decaa9794cbc3bf3060c8285019081527f0e187847ad4c798374d0d6732bf501847dd68bc0e071241e0213bc7fc13db7ab606080850191909152908352845180860186527f304cfbd1e08a704a99f5e847d93f8c3caafddec46b7a0d379da69a4d112346a781527f1739c1b1a457a8c7313123d24d2f9192f896b7c63eea05a9d57f06547ad0cec8818601528385015285840192909252835180820185527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c28186019081527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed828501528152845180860186527f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b81527f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa818601528185015285850152835190810184527f0b6c455a7409441597236351cc9b3820c78b453bcf684be41b138ee35e2999e78185019081527f25eaa70ebbee7f72a4ff6bd186a2bd03d2aa94a38e3f177169edd16e58f96cb1828401528152835180850185527f0d2859dcef884436015a427d6d371c5c935d13ed24eef9f9c4ddc310c66b74bf81527f1c956f84580110eae3c13cd60f2dec6a2ca632f596101bf7db477543daa3db1c818501528184015281850152825160028082529181019093529082015b6106e3610e82565b8152602001906001900390816106db57505060808201908152604080518082019091527f1b14ccd8ecada725463ff917550a6ff911c78396ed48e2f5bd2e1b6b5015e43181527f26a9b3dd6cfd45d98f7fc6fca79577ee07a2d8899d87b2efd5cb63d40b90ec2260208201529051805160009061075c57fe5b602002602001018190525060405180604001604052807f22c24f7779cd44fa8bad17df8e601b7b2d948320d25830cd4b2097ae59a0db5681526020017f1e28066a7dc90ebe7f16a9db9e5e50d480ac009ee7deb7fb076903d4571c4d5f81525081608001516001815181106107cd57fe5b602002602001018190525090565b6107e3610e82565b6107eb610e9c565b835181526020808501519082015260408101839052600060608360808460076107d05a03fa905080801561081e57610820565bfe5b508061088d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f70616972696e672d6d756c2d6661696c65640000000000000000000000000000604482015290519081900360640190fd5b505092915050565b61089d610e82565b6108a5610eba565b8351815260208085015181830152835160408301528301516060808301919091526000908360c08460066107d05a03fa905080801561081e57508061088d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f70616972696e672d6164642d6661696c65640000000000000000000000000000604482015290519081900360640190fd5b610953610e82565b81517f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd479015801561098657506020830151155b156109a657505060408051808201909152600080825260208201526109d2565b604051806040016040528084600001518152602001828560200151816109c857fe5b0683038152509150505b919050565b60408051600480825260a0820190925260009160609190816020015b6109fb610e82565b8152602001906001900390816109f357505060408051600480825260a0820190925291925060609190602082015b610a31610ed8565b815260200190600190039081610a295790505090508a82600081518110610a5457fe5b60200260200101819052508882600181518110610a6d57fe5b60200260200101819052508682600281518110610a8657fe5b60200260200101819052508482600381518110610a9f57fe5b60200260200101819052508981600081518110610ab857fe5b60200260200101819052508781600181518110610ad157fe5b60200260200101819052508581600281518110610aea57fe5b60200260200101819052508381600381518110610b0357fe5b6020026020010181905250610b188282610b27565b9b9a5050505050505050505050565b60008151835114610b9957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f70616972696e672d6c656e677468732d6661696c656400000000000000000000604482015290519081900360640190fd5b82516006810260608167ffffffffffffffff81118015610bb857600080fd5b50604051908082528060200260200182016040528015610be2578160200160208202803683370190505b50905060005b83811015610d6757868181518110610bfc57fe5b602002602001015160000151828260060260000181518110610c1a57fe5b602002602001018181525050868181518110610c3257fe5b602002602001015160200151828260060260010181518110610c5057fe5b602002602001018181525050858181518110610c6857fe5b602090810291909101015151518251839060026006850201908110610c8957fe5b602002602001018181525050858181518110610ca157fe5b60209081029190910101515160016020020151828260060260030181518110610cc657fe5b602002602001018181525050858181518110610cde57fe5b602002602001015160200151600060028110610cf657fe5b6020020151828260060260040181518110610d0d57fe5b602002602001018181525050858181518110610d2557fe5b602002602001015160200151600160028110610d3d57fe5b6020020151828260060260050181518110610d5457fe5b6020908102919091010152600101610be8565b50610d70610ef8565b6000602082602086026020860160086107d05a03fa905080801561081e575080610dfb57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f70616972696e672d6f70636f64652d6661696c65640000000000000000000000604482015290519081900360640190fd5b505115159695505050505050565b6040518060600160405280610e1c610e82565b8152602001610e29610ed8565b8152602001610e36610e82565b905290565b6040518060a00160405280610e4e610e82565b8152602001610e5b610ed8565b8152602001610e68610ed8565b8152602001610e75610ed8565b8152602001606081525090565b604051806040016040528060008152602001600081525090565b60405180606001604052806003906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b6040518060400160405280610eeb610f16565b8152602001610e36610f16565b60405180602001604052806001906020820280368337509192915050565b6040518060400160405280600290602082028036833750919291505056fea26469706673582212204487892e304acb994c5d5b9cb868fea63f7402b83c7257de032d2b26011d688464736f6c634300060b0033", + "bytecode": "0x608060405234801561001057600080fd5b50610f6a806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c806343753b4d14610030575b600080fd5b61012c600480360361012081101561004757600080fd5b6040805180820182529183019291818301918390600290839083908082843760009201829052506040805180820190915293969594608081019493509150600290835b828210156100c8576040805180820182529080840286019060029083908390808284376000920191909152505050815260019091019060200161008a565b5050604080518082018252939695948181019493509150600290839083908082843760009201919091525050604080516020818101909252929594938181019392509060019083908390808284376000920191909152509194506101409350505050565b604080519115158252519081900360200190f35b600061014a610e09565b6040805180820182528751815260208089015181830152908352815160808101835287515181840190815288518301516060808401919091529082528351808501855289840180515182525184015181850152828401528483019190915282518084018452875181528783015181840152848401528251600180825281850190945290929091828101908036833701905050905060005b600181101561021a578481600181106101f657fe5b602002015182828151811061020757fe5b60209081029190910101526001016101e1565b506102258183610243565b6102345760019250505061023b565b6000925050505b949350505050565b60007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000161026e610e3b565b61027661045a565b90508060800151518551600101146102ef57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f76657269666965722d6261642d696e7075740000000000000000000000000000604482015290519081900360640190fd5b6102f7610e82565b50604080518082019091526000808252602082018190525b86518110156103e3578387828151811061032557fe5b60200260200101511061039957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f76657269666965722d6774652d736e61726b2d7363616c61722d6669656c6400604482015290519081900360640190fd5b6103d9826103d4856080015184600101815181106103b357fe5b60200260200101518a85815181106103c757fe5b60200260200101516107db565b610895565b915060010161030f565b506104068183608001516000815181106103f957fe5b6020026020010151610895565b905061043c610418866000015161094b565b8660200151846000015185602001518587604001518b6040015189606001516109d7565b61044c5760019350505050610454565b600093505050505b92915050565b610462610e3b565b6040805180820182527f2d4d9aa7e302d9df41749d5507949d05dbea33fbb16c643b22f599a2be6df2e281527f14bedd503c37ceb061d8ec60209fe345ce89830a19230301f076caff004d19266020808301919091529083528151608080820184527f0967032fcbf776d1afc985f88877f182d38480a653f2decaa9794cbc3bf3060c8285019081527f0e187847ad4c798374d0d6732bf501847dd68bc0e071241e0213bc7fc13db7ab606080850191909152908352845180860186527f304cfbd1e08a704a99f5e847d93f8c3caafddec46b7a0d379da69a4d112346a781527f1739c1b1a457a8c7313123d24d2f9192f896b7c63eea05a9d57f06547ad0cec8818601528385015285840192909252835180820185527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c28186019081527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed828501528152845180860186527f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b81527f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa818601528185015285850152835190810184527f1c54dd0e0553498d9ad235eba24f03388a6d59de79a7e230d1af04b6265c332a8185019081527f04838e83a3ca2ed7495b2bc24d0e13df73aebb38529a720294593229266b6a60828401528152835180850185527f28b1fa81466521b85e5417203033af0e2966cb612c66c866a78544b3a4c2888281527f23d69a4e817251288cb1703587e30eaedec5b9bab022897756b5f160f755f03e818501528184015281850152825160028082529181019093529082015b6106e3610e82565b8152602001906001900390816106db57505060808201908152604080518082019091527f1b14ccd8ecada725463ff917550a6ff911c78396ed48e2f5bd2e1b6b5015e43181527f26a9b3dd6cfd45d98f7fc6fca79577ee07a2d8899d87b2efd5cb63d40b90ec2260208201529051805160009061075c57fe5b602002602001018190525060405180604001604052807f22c24f7779cd44fa8bad17df8e601b7b2d948320d25830cd4b2097ae59a0db5681526020017f1e28066a7dc90ebe7f16a9db9e5e50d480ac009ee7deb7fb076903d4571c4d5f81525081608001516001815181106107cd57fe5b602002602001018190525090565b6107e3610e82565b6107eb610e9c565b835181526020808501519082015260408101839052600060608360808460076107d05a03fa905080801561081e57610820565bfe5b508061088d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f70616972696e672d6d756c2d6661696c65640000000000000000000000000000604482015290519081900360640190fd5b505092915050565b61089d610e82565b6108a5610eba565b8351815260208085015181830152835160408301528301516060808301919091526000908360c08460066107d05a03fa905080801561081e57508061088d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f70616972696e672d6164642d6661696c65640000000000000000000000000000604482015290519081900360640190fd5b610953610e82565b81517f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd479015801561098657506020830151155b156109a657505060408051808201909152600080825260208201526109d2565b604051806040016040528084600001518152602001828560200151816109c857fe5b0683038152509150505b919050565b60408051600480825260a0820190925260009160609190816020015b6109fb610e82565b8152602001906001900390816109f357505060408051600480825260a0820190925291925060609190602082015b610a31610ed8565b815260200190600190039081610a295790505090508a82600081518110610a5457fe5b60200260200101819052508882600181518110610a6d57fe5b60200260200101819052508682600281518110610a8657fe5b60200260200101819052508482600381518110610a9f57fe5b60200260200101819052508981600081518110610ab857fe5b60200260200101819052508781600181518110610ad157fe5b60200260200101819052508581600281518110610aea57fe5b60200260200101819052508381600381518110610b0357fe5b6020026020010181905250610b188282610b27565b9b9a5050505050505050505050565b60008151835114610b9957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f70616972696e672d6c656e677468732d6661696c656400000000000000000000604482015290519081900360640190fd5b82516006810260608167ffffffffffffffff81118015610bb857600080fd5b50604051908082528060200260200182016040528015610be2578160200160208202803683370190505b50905060005b83811015610d6757868181518110610bfc57fe5b602002602001015160000151828260060260000181518110610c1a57fe5b602002602001018181525050868181518110610c3257fe5b602002602001015160200151828260060260010181518110610c5057fe5b602002602001018181525050858181518110610c6857fe5b602090810291909101015151518251839060026006850201908110610c8957fe5b602002602001018181525050858181518110610ca157fe5b60209081029190910101515160016020020151828260060260030181518110610cc657fe5b602002602001018181525050858181518110610cde57fe5b602002602001015160200151600060028110610cf657fe5b6020020151828260060260040181518110610d0d57fe5b602002602001018181525050858181518110610d2557fe5b602002602001015160200151600160028110610d3d57fe5b6020020151828260060260050181518110610d5457fe5b6020908102919091010152600101610be8565b50610d70610ef8565b6000602082602086026020860160086107d05a03fa905080801561081e575080610dfb57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f70616972696e672d6f70636f64652d6661696c65640000000000000000000000604482015290519081900360640190fd5b505115159695505050505050565b6040518060600160405280610e1c610e82565b8152602001610e29610ed8565b8152602001610e36610e82565b905290565b6040518060a00160405280610e4e610e82565b8152602001610e5b610ed8565b8152602001610e68610ed8565b8152602001610e75610ed8565b8152602001606081525090565b604051806040016040528060008152602001600081525090565b60405180606001604052806003906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b6040518060400160405280610eeb610f16565b8152602001610e36610f16565b60405180602001604052806001906020820280368337509192915050565b6040518060400160405280600290602082028036833750919291505056fea264697066735822122098324ddce9e84c978330c7212c926e6b6ea251702f68746d297acfc078338f4864736f6c634300060b0033", + "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061002b5760003560e01c806343753b4d14610030575b600080fd5b61012c600480360361012081101561004757600080fd5b6040805180820182529183019291818301918390600290839083908082843760009201829052506040805180820190915293969594608081019493509150600290835b828210156100c8576040805180820182529080840286019060029083908390808284376000920191909152505050815260019091019060200161008a565b5050604080518082018252939695948181019493509150600290839083908082843760009201919091525050604080516020818101909252929594938181019392509060019083908390808284376000920191909152509194506101409350505050565b604080519115158252519081900360200190f35b600061014a610e09565b6040805180820182528751815260208089015181830152908352815160808101835287515181840190815288518301516060808401919091529082528351808501855289840180515182525184015181850152828401528483019190915282518084018452875181528783015181840152848401528251600180825281850190945290929091828101908036833701905050905060005b600181101561021a578481600181106101f657fe5b602002015182828151811061020757fe5b60209081029190910101526001016101e1565b506102258183610243565b6102345760019250505061023b565b6000925050505b949350505050565b60007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000161026e610e3b565b61027661045a565b90508060800151518551600101146102ef57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f76657269666965722d6261642d696e7075740000000000000000000000000000604482015290519081900360640190fd5b6102f7610e82565b50604080518082019091526000808252602082018190525b86518110156103e3578387828151811061032557fe5b60200260200101511061039957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f76657269666965722d6774652d736e61726b2d7363616c61722d6669656c6400604482015290519081900360640190fd5b6103d9826103d4856080015184600101815181106103b357fe5b60200260200101518a85815181106103c757fe5b60200260200101516107db565b610895565b915060010161030f565b506104068183608001516000815181106103f957fe5b6020026020010151610895565b905061043c610418866000015161094b565b8660200151846000015185602001518587604001518b6040015189606001516109d7565b61044c5760019350505050610454565b600093505050505b92915050565b610462610e3b565b6040805180820182527f2d4d9aa7e302d9df41749d5507949d05dbea33fbb16c643b22f599a2be6df2e281527f14bedd503c37ceb061d8ec60209fe345ce89830a19230301f076caff004d19266020808301919091529083528151608080820184527f0967032fcbf776d1afc985f88877f182d38480a653f2decaa9794cbc3bf3060c8285019081527f0e187847ad4c798374d0d6732bf501847dd68bc0e071241e0213bc7fc13db7ab606080850191909152908352845180860186527f304cfbd1e08a704a99f5e847d93f8c3caafddec46b7a0d379da69a4d112346a781527f1739c1b1a457a8c7313123d24d2f9192f896b7c63eea05a9d57f06547ad0cec8818601528385015285840192909252835180820185527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c28186019081527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed828501528152845180860186527f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b81527f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa818601528185015285850152835190810184527f1c54dd0e0553498d9ad235eba24f03388a6d59de79a7e230d1af04b6265c332a8185019081527f04838e83a3ca2ed7495b2bc24d0e13df73aebb38529a720294593229266b6a60828401528152835180850185527f28b1fa81466521b85e5417203033af0e2966cb612c66c866a78544b3a4c2888281527f23d69a4e817251288cb1703587e30eaedec5b9bab022897756b5f160f755f03e818501528184015281850152825160028082529181019093529082015b6106e3610e82565b8152602001906001900390816106db57505060808201908152604080518082019091527f1b14ccd8ecada725463ff917550a6ff911c78396ed48e2f5bd2e1b6b5015e43181527f26a9b3dd6cfd45d98f7fc6fca79577ee07a2d8899d87b2efd5cb63d40b90ec2260208201529051805160009061075c57fe5b602002602001018190525060405180604001604052807f22c24f7779cd44fa8bad17df8e601b7b2d948320d25830cd4b2097ae59a0db5681526020017f1e28066a7dc90ebe7f16a9db9e5e50d480ac009ee7deb7fb076903d4571c4d5f81525081608001516001815181106107cd57fe5b602002602001018190525090565b6107e3610e82565b6107eb610e9c565b835181526020808501519082015260408101839052600060608360808460076107d05a03fa905080801561081e57610820565bfe5b508061088d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f70616972696e672d6d756c2d6661696c65640000000000000000000000000000604482015290519081900360640190fd5b505092915050565b61089d610e82565b6108a5610eba565b8351815260208085015181830152835160408301528301516060808301919091526000908360c08460066107d05a03fa905080801561081e57508061088d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f70616972696e672d6164642d6661696c65640000000000000000000000000000604482015290519081900360640190fd5b610953610e82565b81517f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd479015801561098657506020830151155b156109a657505060408051808201909152600080825260208201526109d2565b604051806040016040528084600001518152602001828560200151816109c857fe5b0683038152509150505b919050565b60408051600480825260a0820190925260009160609190816020015b6109fb610e82565b8152602001906001900390816109f357505060408051600480825260a0820190925291925060609190602082015b610a31610ed8565b815260200190600190039081610a295790505090508a82600081518110610a5457fe5b60200260200101819052508882600181518110610a6d57fe5b60200260200101819052508682600281518110610a8657fe5b60200260200101819052508482600381518110610a9f57fe5b60200260200101819052508981600081518110610ab857fe5b60200260200101819052508781600181518110610ad157fe5b60200260200101819052508581600281518110610aea57fe5b60200260200101819052508381600381518110610b0357fe5b6020026020010181905250610b188282610b27565b9b9a5050505050505050505050565b60008151835114610b9957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f70616972696e672d6c656e677468732d6661696c656400000000000000000000604482015290519081900360640190fd5b82516006810260608167ffffffffffffffff81118015610bb857600080fd5b50604051908082528060200260200182016040528015610be2578160200160208202803683370190505b50905060005b83811015610d6757868181518110610bfc57fe5b602002602001015160000151828260060260000181518110610c1a57fe5b602002602001018181525050868181518110610c3257fe5b602002602001015160200151828260060260010181518110610c5057fe5b602002602001018181525050858181518110610c6857fe5b602090810291909101015151518251839060026006850201908110610c8957fe5b602002602001018181525050858181518110610ca157fe5b60209081029190910101515160016020020151828260060260030181518110610cc657fe5b602002602001018181525050858181518110610cde57fe5b602002602001015160200151600060028110610cf657fe5b6020020151828260060260040181518110610d0d57fe5b602002602001018181525050858181518110610d2557fe5b602002602001015160200151600160028110610d3d57fe5b6020020151828260060260050181518110610d5457fe5b6020908102919091010152600101610be8565b50610d70610ef8565b6000602082602086026020860160086107d05a03fa905080801561081e575080610dfb57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f70616972696e672d6f70636f64652d6661696c65640000000000000000000000604482015290519081900360640190fd5b505115159695505050505050565b6040518060600160405280610e1c610e82565b8152602001610e29610ed8565b8152602001610e36610e82565b905290565b6040518060a00160405280610e4e610e82565b8152602001610e5b610ed8565b8152602001610e68610ed8565b8152602001610e75610ed8565b8152602001606081525090565b604051806040016040528060008152602001600081525090565b60405180606001604052806003906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b6040518060400160405280610eeb610f16565b8152602001610e36610f16565b60405180602001604052806001906020820280368337509192915050565b6040518060400160405280600290602082028036833750919291505056fea264697066735822122098324ddce9e84c978330c7212c926e6b6ea251702f68746d297acfc078338f4864736f6c634300060b0033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/contracts/Bridge.sol b/contracts/Bridge.sol index faf01c404..4a06ddd37 100644 --- a/contracts/Bridge.sol +++ b/contracts/Bridge.sol @@ -587,11 +587,9 @@ contract Bridge is * @notice Function to extract the selector of a bytes calldata * @param _data The calldata bytes */ - function _getSelector(bytes memory _data) - private - pure - returns (bytes4 sig) - { + function _getSelector( + bytes memory _data + ) private pure returns (bytes4 sig) { assembly { sig := mload(add(_data, 32)) } diff --git a/contracts/ProofOfEfficiency.sol b/contracts/ProofOfEfficiency.sol index 16a994745..c9839eb44 100644 --- a/contracts/ProofOfEfficiency.sol +++ b/contracts/ProofOfEfficiency.sol @@ -189,7 +189,10 @@ contract ProofOfEfficiency is /** * @dev Emitted when is proved a different state given the same batches */ - event ProofDifferentState(bytes32 storedStateRoot, bytes32 provedStateRoot); + event ProveNonDeterministicState( + bytes32 storedStateRoot, + bytes32 provedStateRoot + ); /** * @param _globalExitRootManager global exit root manager address @@ -262,13 +265,14 @@ contract ProofOfEfficiency is * @notice Allows a sequencer to send multiple batches * @param batches Struct array which the necessary data to append new batces ot the sequence */ - function sequenceBatches(BatchData[] memory batches) - public - ifNotEmergencyState - onlyTrustedSequencer - { + function sequenceBatches( + BatchData[] memory batches + ) public ifNotEmergencyState onlyTrustedSequencer { uint256 batchesNum = batches.length; - + require( + batchesNum > 0, + "ProofOfEfficiency::sequenceBatches: At least must sequence 1 batch" + ); // Store storage variables in memory, to save gas, because will be overrided multiple times uint64 currentTimestamp = lastTimestamp; uint64 currentBatchSequenced = lastBatchSequenced; @@ -442,11 +446,10 @@ contract ProofOfEfficiency is * @param transactions L2 ethereum transactions EIP-155 or pre-EIP-155 with signature: * @param maticAmount Max amount of MATIC tokens that the sender is willing to pay */ - function forceBatch(bytes memory transactions, uint256 maticAmount) - public - ifNotEmergencyState - isForceBatchAllowed - { + function forceBatch( + bytes memory transactions, + uint256 maticAmount + ) public ifNotEmergencyState isForceBatchAllowed { // Calculate matic collateral uint256 maticFee = calculateForceProverFee(); @@ -495,11 +498,9 @@ contract ProofOfEfficiency is * @notice Allows anyone to sequence forced Batches if the trusted sequencer do not have done it in the timeout period * @param batches Struct array which the necessary data to append new batces ot the sequence */ - function sequenceForceBatches(ForceBatchData[] memory batches) - public - ifNotEmergencyState - isForceBatchAllowed - { + function sequenceForceBatches( + ForceBatchData[] memory batches + ) public ifNotEmergencyState isForceBatchAllowed { uint256 batchesNum = batches.length; require( @@ -575,10 +576,9 @@ contract ProofOfEfficiency is * @notice Allow the current trusted sequencer to set a new trusted sequencer * @param newTrustedSequencer Address of the new trusted sequuencer */ - function setTrustedSequencer(address newTrustedSequencer) - public - onlyTrustedSequencer - { + function setTrustedSequencer( + address newTrustedSequencer + ) public onlyTrustedSequencer { trustedSequencer = newTrustedSequencer; emit SetTrustedSequencer(newTrustedSequencer); @@ -588,10 +588,9 @@ contract ProofOfEfficiency is * @notice Allow the current trusted sequencer to allow/disallow the forceBatch functionality * @param newForceBatchAllowed Whether is allowed or not the forceBatch functionality */ - function setForceBatchAllowed(bool newForceBatchAllowed) - public - onlyTrustedSequencer - { + function setForceBatchAllowed( + bool newForceBatchAllowed + ) public onlyTrustedSequencer { forceBatchAllowed = newForceBatchAllowed; emit SetForceBatchAllowed(newForceBatchAllowed); @@ -601,10 +600,9 @@ contract ProofOfEfficiency is * @notice Allow the trusted sequencer to set the trusted sequencer URL * @param newTrustedSequencerURL URL of trusted sequencer */ - function setTrustedSequencerURL(string memory newTrustedSequencerURL) - public - onlyTrustedSequencer - { + function setTrustedSequencerURL( + string memory newTrustedSequencerURL + ) public onlyTrustedSequencer { trustedSequencerURL = newTrustedSequencerURL; emit SetTrustedSequencerURL(newTrustedSequencerURL); @@ -614,17 +612,16 @@ contract ProofOfEfficiency is * @notice Allow the current security council to set a new security council address * @param newSecurityCouncil Address of the new security council */ - function setSecurityCouncil(address newSecurityCouncil) - public - onlySecurityCouncil - { + function setSecurityCouncil( + address newSecurityCouncil + ) public onlySecurityCouncil { securityCouncil = newSecurityCouncil; emit SetSecurityCouncil(newSecurityCouncil); } /** - * @notice Allows to stop the zk-evm if its possible to proof a different state root give the same batches. + * @notice Allows to stop the zk-evm if its possible to prove a different state root give the same batches. * @param initNumBatch Batch which the aggregator starts the verification * @param finalNewBatch Last batch aggregator intends to verify * @param newLocalExitRoot New local exit root once the batch is processed @@ -633,7 +630,7 @@ contract ProofOfEfficiency is * @param proofB zk-snark input * @param proofC zk-snark input */ - function proofDifferentState( + function proveNonDeterministicState( uint64 initNumBatch, uint64 finalNewBatch, bytes32 newLocalExitRoot, @@ -644,22 +641,22 @@ contract ProofOfEfficiency is ) public ifNotEmergencyState { require( initNumBatch < finalNewBatch, - "ProofOfEfficiency::proofDifferentState: finalNewBatch must be bigger than initNumBatch" + "ProofOfEfficiency::proveNonDeterministicState: finalNewBatch must be bigger than initNumBatch" ); require( finalNewBatch <= lastVerifiedBatch, - "ProofOfEfficiency::proofDifferentState: finalNewBatch must be less or equal than lastVerifiedBatch" + "ProofOfEfficiency::proveNonDeterministicState: finalNewBatch must be less or equal than lastVerifiedBatch" ); require( batchNumToStateRoot[initNumBatch] != bytes32(0), - "ProofOfEfficiency::proofDifferentState: initNumBatch state root does not exist" + "ProofOfEfficiency::proveNonDeterministicState: initNumBatch state root does not exist" ); require( batchNumToStateRoot[finalNewBatch] != bytes32(0), - "ProofOfEfficiency::proofDifferentState: finalNewBatch state root does not exist" + "ProofOfEfficiency::proveNonDeterministicState: finalNewBatch state root does not exist" ); bytes memory snarkHashBytes = getInputSnarkBytes( @@ -675,15 +672,15 @@ contract ProofOfEfficiency is // Verify proof require( rollupVerifier.verifyProof(proofA, proofB, proofC, [inputSnark]), - "ProofOfEfficiency::proofDifferentState: INVALID_PROOF" + "ProofOfEfficiency::proveNonDeterministicState: INVALID_PROOF" ); require( batchNumToStateRoot[finalNewBatch] != newStateRoot, - "ProofOfEfficiency::proofDifferentState: stored root must be different than new state root" + "ProofOfEfficiency::proveNonDeterministicState: stored root must be different than new state root" ); - emit ProofDifferentState( + emit ProveNonDeterministicState( batchNumToStateRoot[finalNewBatch], newStateRoot ); diff --git a/contracts/lib/TokenWrapped.sol b/contracts/lib/TokenWrapped.sol index 2bd550a27..92b7609d2 100644 --- a/contracts/lib/TokenWrapped.sol +++ b/contracts/lib/TokenWrapped.sol @@ -55,20 +55,18 @@ contract TokenWrapped is ERC20 { _DEPLOYMENT_DOMAIN_SEPARATOR = _calculateDomainSeparator(block.chainid); } - function mint(address to, uint256 value) - external - onlyBridge - returns (bool) - { + function mint( + address to, + uint256 value + ) external onlyBridge returns (bool) { _mint(to, value); return true; } - function burn(address account, uint256 value) - external - onlyBridge - returns (bool) - { + function burn( + address account, + uint256 value + ) external onlyBridge returns (bool) { _burn(account, value); return true; } @@ -120,11 +118,9 @@ contract TokenWrapped is ERC20 { * @notice Calculate domain separator, given a chainID. * @param chainId Current chainID */ - function _calculateDomainSeparator(uint256 chainId) - private - view - returns (bytes32) - { + function _calculateDomainSeparator( + uint256 chainId + ) private view returns (bytes32) { return keccak256( abi.encode( diff --git a/contracts/mocks/GlobalExitRootManagerMock.sol b/contracts/mocks/GlobalExitRootManagerMock.sol index 6a69f578d..e2b0f0a33 100644 --- a/contracts/mocks/GlobalExitRootManagerMock.sol +++ b/contracts/mocks/GlobalExitRootManagerMock.sol @@ -23,4 +23,14 @@ contract GlobalExitRootManagerMock is GlobalExitRootManager { function setLastGlobalExitRoot(uint256 timestamp) public { globalExitRootMap[getLastGlobalExitRoot()] = timestamp; } + + /** + * @notice Set last global exit root + * @param timestamp timestamp + */ + function setGlobalExitRoot(bytes32 globalExitRoot, uint256 timestamp) + public + { + globalExitRootMap[globalExitRoot] = timestamp; + } } diff --git a/contracts/verifiers/Verifier.sol b/contracts/verifiers/Verifier.sol index b3c680d40..b485f03f6 100644 --- a/contracts/verifiers/Verifier.sol +++ b/contracts/verifiers/Verifier.sol @@ -15,13 +15,13 @@ pragma solidity ^0.6.11; library Pairing { struct G1Point { - uint256 X; - uint256 Y; + uint X; + uint Y; } // Encoding of field elements is: X[0] * z + X[1] struct G2Point { - uint256[2] X; - uint256[2] Y; + uint[2] X; + uint[2] Y; } /// @return the generator of G1 @@ -58,18 +58,17 @@ library Pairing { /// @return r the negation of p, i.e. p.addition(p.negate()) should be zero. function negate(G1Point memory p) internal pure returns (G1Point memory r) { // The prime q in the base field F_q for G1 - uint256 q = 21888242871839275222246405745257275088696311157297823662689037894645226208583; + uint q = 21888242871839275222246405745257275088696311157297823662689037894645226208583; if (p.X == 0 && p.Y == 0) return G1Point(0, 0); return G1Point(p.X, q - (p.Y % q)); } /// @return r the sum of two points of G1 - function addition(G1Point memory p1, G1Point memory p2) - internal - view - returns (G1Point memory r) - { - uint256[4] memory input; + function addition( + G1Point memory p1, + G1Point memory p2 + ) internal view returns (G1Point memory r) { + uint[4] memory input; input[0] = p1.X; input[1] = p1.Y; input[2] = p2.X; @@ -89,12 +88,11 @@ library Pairing { /// @return r the product of a point on G1 and a scalar, i.e. /// p == p.scalar_mul(1) and p.addition(p) == p.scalar_mul(2) for all points p. - function scalar_mul(G1Point memory p, uint256 s) - internal - view - returns (G1Point memory r) - { - uint256[3] memory input; + function scalar_mul( + G1Point memory p, + uint s + ) internal view returns (G1Point memory r) { + uint[3] memory input; input[0] = p.X; input[1] = p.Y; input[2] = s; @@ -115,16 +113,15 @@ library Pairing { /// e(p1[0], p2[0]) * .... * e(p1[n], p2[n]) == 1 /// For example pairing([P1(), P1().negate()], [P2(), P2()]) should /// return true. - function pairing(G1Point[] memory p1, G2Point[] memory p2) - internal - view - returns (bool) - { + function pairing( + G1Point[] memory p1, + G2Point[] memory p2 + ) internal view returns (bool) { require(p1.length == p2.length, "pairing-lengths-failed"); - uint256 elements = p1.length; - uint256 inputSize = elements * 6; - uint256[] memory input = new uint256[](inputSize); - for (uint256 i = 0; i < elements; i++) { + uint elements = p1.length; + uint inputSize = elements * 6; + uint[] memory input = new uint[](inputSize); + for (uint i = 0; i < elements; i++) { input[i * 6 + 0] = p1[i].X; input[i * 6 + 1] = p1[i].Y; input[i * 6 + 2] = p2[i].X[0]; @@ -132,7 +129,7 @@ library Pairing { input[i * 6 + 4] = p2[i].Y[0]; input[i * 6 + 5] = p2[i].Y[1]; } - uint256[1] memory out; + uint[1] memory out; bool success; // solium-disable-next-line security/no-inline-assembly assembly { @@ -258,12 +255,12 @@ contract Verifier { ); vk.delta2 = Pairing.G2Point( [ - 5166739476525161998279127555945377846817167507000096942371674429228912843239, - 17150170599609676531144701456233439733620504581071386406563768754073729854641 + 12814700577715561086096033427148961091750918964504032570646700444819578958634, + 2041691956802368350105476040949274775250346775892291306599620810817556671072 ], [ - 5951361126012424029872139543886489891562224748155298287734148781315143201983, - 12928789634808812184433255215537433503271573851948409990657171984828126714652 + 18406974795629710857775073192913245904417477578893270042123797230867871598722, + 16210119957722456545813311284028623129612781001767663812083464631006254198846 ] ); vk.IC = new Pairing.G1Point[](2); @@ -279,17 +276,16 @@ contract Verifier { ); } - function verify(uint256[] memory input, Proof memory proof) - internal - view - returns (uint256) - { + function verify( + uint[] memory input, + Proof memory proof + ) internal view returns (uint) { uint256 snark_scalar_field = 21888242871839275222246405745257275088548364400416034343698204186575808495617; VerifyingKey memory vk = verifyingKey(); require(input.length + 1 == vk.IC.length, "verifier-bad-input"); // Compute the linear combination vk_x Pairing.G1Point memory vk_x = Pairing.G1Point(0, 0); - for (uint256 i = 0; i < input.length; i++) { + for (uint i = 0; i < input.length; i++) { require( input[i] < snark_scalar_field, "verifier-gte-snark-scalar-field" @@ -317,17 +313,17 @@ contract Verifier { /// @return r bool true if proof is valid function verifyProof( - uint256[2] memory a, - uint256[2][2] memory b, - uint256[2] memory c, - uint256[1] memory input + uint[2] memory a, + uint[2][2] memory b, + uint[2] memory c, + uint[1] memory input ) public view returns (bool r) { Proof memory proof; proof.A = Pairing.G1Point(a[0], a[1]); proof.B = Pairing.G2Point([b[0][0], b[0][1]], [b[1][0], b[1][1]]); proof.C = Pairing.G1Point(c[0], c[1]); - uint256[] memory inputValues = new uint256[](input.length); - for (uint256 i = 0; i < input.length; i++) { + uint[] memory inputValues = new uint[](input.length); + for (uint i = 0; i < input.length; i++) { inputValues[i] = input[i]; } if (verify(inputValues, proof) == 0) { diff --git a/docs/ProofOfEfficiency.md b/docs/ProofOfEfficiency.md index 3ccc59b48..5c1bc8415 100644 --- a/docs/ProofOfEfficiency.md +++ b/docs/ProofOfEfficiency.md @@ -167,9 +167,9 @@ Allow the current security council to set a new security council address | :--- | :--- | :------------------------------------------------------------------- | |`newSecurityCouncil` | address | Address of the new security council -### proofDifferentState +### proveNonDeterministicState ```solidity - function proofDifferentState( + function proveNonDeterministicState( uint64 initNumBatch, uint64 finalNewBatch, bytes32 newLocalExitRoot, @@ -179,7 +179,7 @@ Allow the current security council to set a new security council address uint256[2] proofC ) public ``` -Allows to stop the zk-evm if its possible to proof a different state root give the same batches. +Allows to stop the zk-evm if its possible to prove a different state root give the same batches. #### Parameters: @@ -327,9 +327,9 @@ Emitted when a trusted sequencer update his URL Emitted when security council update his address -### ProofDifferentState +### ProveNonDeterministicState ```solidity - event ProofDifferentState( + event ProveNonDeterministicState( ) ``` diff --git a/package.json b/package.json index fd86303ce..98a095c61 100644 --- a/package.json +++ b/package.json @@ -30,7 +30,7 @@ "homepage": "https://github.com/0xPolygonHermez/contracts-zkEVM#readme", "license": "pending", "dependencies": { - "@0xpolygonhermez/zkevm-commonjs": "github:0xPolygonHermez/zkevm-commonjs#recursive", + "@0xpolygonhermez/zkevm-commonjs": "github:0xPolygonHermez/zkevm-commonjs#v0.5.0.0", "@nomiclabs/hardhat-ethers": "^2.0.2", "@nomiclabs/hardhat-etherscan": "^3.1.0", "@nomiclabs/hardhat-waffle": "^2.0.3", diff --git a/test/contracts/emergencyManager.test.js b/test/contracts/emergencyManager.test.js index c557537d1..786f4c4d6 100644 --- a/test/contracts/emergencyManager.test.js +++ b/test/contracts/emergencyManager.test.js @@ -255,7 +255,7 @@ describe('Emergency mode test', () => { // Finally enter in emergency mode again proving distinc state await expect( - proofOfEfficiencyContract.connect(aggregator).proofDifferentState( + proofOfEfficiencyContract.connect(aggregator).proveNonDeterministicState( numBatch - 1, numBatch - 1, newLocalExitRoot, @@ -264,10 +264,10 @@ describe('Emergency mode test', () => { proofB, proofC, ), - ).to.be.revertedWith('ProofOfEfficiency::proofDifferentState: finalNewBatch must be bigger than initNumBatch'); + ).to.be.revertedWith('ProofOfEfficiency::proveNonDeterministicState: finalNewBatch must be bigger than initNumBatch'); await expect( - proofOfEfficiencyContract.connect(aggregator).proofDifferentState( + proofOfEfficiencyContract.connect(aggregator).proveNonDeterministicState( numBatch - 1, numBatch + 1, newLocalExitRoot, @@ -276,12 +276,12 @@ describe('Emergency mode test', () => { proofB, proofC, ), - ).to.be.revertedWith('ProofOfEfficiency::proofDifferentState: finalNewBatch must be less or equal than lastVerifiedBatch'); + ).to.be.revertedWith('ProofOfEfficiency::proveNonDeterministicState: finalNewBatch must be less or equal than lastVerifiedBatch'); const newStateRootDistinct = '0x0000000000000000000000000000000000000000000000000000000000000002'; await expect( - proofOfEfficiencyContract.proofDifferentState( + proofOfEfficiencyContract.proveNonDeterministicState( numBatch - 1, numBatch, newLocalExitRoot, @@ -290,7 +290,7 @@ describe('Emergency mode test', () => { proofB, proofC, ), - ).to.emit(proofOfEfficiencyContract, 'ProofDifferentState').withArgs(newStateRoot, newStateRootDistinct) + ).to.emit(proofOfEfficiencyContract, 'ProveNonDeterministicState').withArgs(newStateRoot, newStateRootDistinct) .to.emit(proofOfEfficiencyContract, 'EmergencyStateActivated') .to.emit(bridgeContract, 'EmergencyStateActivated'); diff --git a/test/contracts/real-prover/real-flow.test.js b/test/contracts/real-prover/real-flow.test.js index bc6881f9f..fa0de2ebe 100644 --- a/test/contracts/real-prover/real-flow.test.js +++ b/test/contracts/real-prover/real-flow.test.js @@ -1,3 +1,5 @@ +/* eslint-disable no-await-in-loop */ + const { expect } = require('chai'); const { ethers, upgrades } = require('hardhat'); const { Scalar } = require('ffjavascript'); @@ -25,19 +27,20 @@ describe('Real flow test', () => { const maticTokenSymbol = 'MATIC'; const maticTokenInitialBalance = ethers.utils.parseEther('20000000'); - const genesisRoot = '0x0000000000000000000000000000000000000000000000000000000000000001'; + const genesisRoot = inputJson.oldStateRoot; const networkIDMainnet = 0; const allowForcebatches = true; const urlSequencer = 'http://zkevm-json-rpc:8123'; - const chainID = inputJson.chainId; + const { chainID } = inputJson; const networkName = 'zkevm'; beforeEach('Deploy contract', async () => { // load signers [deployer] = await ethers.getSigners(); - const trustedSequencerAddress = inputJson.sequencerAddr; + // Could be different address teorically but for now it's fine + const trustedSequencerAddress = inputJson.singleBatchData[0].sequencerAddr; await ethers.provider.send('hardhat_impersonateAccount', [trustedSequencerAddress]); trustedSequencer = await ethers.getSigner(trustedSequencerAddress); await deployer.sendTransaction({ @@ -95,91 +98,121 @@ describe('Real flow test', () => { }); it('Test real prover', async () => { + const batchesData = inputJson.singleBatchData; + const batchesNum = batchesData.length; + + // Approve tokens + const maticAmount = await proofOfEfficiencyContract.TRUSTED_SEQUENCER_FEE(); + await expect( + maticTokenContract.connect(trustedSequencer).approve(proofOfEfficiencyContract.address, maticAmount.mul(batchesNum)), + ).to.emit(maticTokenContract, 'Approval'); + + // prepare PoE + await proofOfEfficiencyContract.setVerifiedBatch(inputJson.oldNumBatch); + await proofOfEfficiencyContract.setSequencedBatch(inputJson.oldNumBatch); + const lastTimestamp = batchesData[batchesNum - 1].timestamp; + await ethers.provider.send('evm_setNextBlockTimestamp', [lastTimestamp]); + + for (let i = 0; i < batchesNum; i++) { + // set timestamp for the sendBatch call + const currentBatchData = batchesData[i]; + + const currentSequence = { + transactions: currentBatchData.batchL2Data, + globalExitRoot: currentBatchData.globalExitRoot, + timestamp: currentBatchData.timestamp, + minForcedTimestamp: 0, + }; + + const batchAccInputHashJs = calculateAccInputHash( + currentBatchData.oldAccInputHash, + calculateBatchHashData(currentBatchData.batchL2Data), + currentBatchData.globalExitRoot, + currentBatchData.timestamp, + currentBatchData.sequencerAddr, // fix + ); + expect(batchAccInputHashJs).to.be.eq(currentBatchData.newAccInputHash); + + // prapare globalExitRoot + const randomTimestamp = 1001; + const { globalExitRoot } = batchesData[0]; + await globalExitRootManager.setGlobalExitRoot(globalExitRoot, randomTimestamp); + + const lastBatchSequenced = await proofOfEfficiencyContract.lastBatchSequenced(); + + // check trusted sequencer + const trustedSequencerAddress = inputJson.singleBatchData[i].sequencerAddr; + if (trustedSequencer.address !== trustedSequencerAddress) { + await proofOfEfficiencyContract.connect(trustedSequencer).setTrustedSequencer(trustedSequencerAddress); + await ethers.provider.send('hardhat_impersonateAccount', [trustedSequencerAddress]); + trustedSequencer = await ethers.getSigner(trustedSequencerAddress); + await deployer.sendTransaction({ + to: trustedSequencerAddress, + value: ethers.utils.parseEther('4'), + }); + await expect( + maticTokenContract.connect(trustedSequencer).approve(proofOfEfficiencyContract.address, maticAmount.mul(batchesNum)), + ).to.emit(maticTokenContract, 'Approval'); + await maticTokenContract.transfer(trustedSequencer.address, ethers.utils.parseEther('100')); + } + + // Sequence Batches + await expect(proofOfEfficiencyContract.connect(trustedSequencer).sequenceBatches([currentSequence])) + .to.emit(proofOfEfficiencyContract, 'SequenceBatches') + .withArgs(Number(lastBatchSequenced) + 1); + } + + // Set state and exit root + await proofOfEfficiencyContract.setStateRoot(inputJson.oldStateRoot, inputJson.oldNumBatch); + + const { aggregatorAddress } = inputJson; + await ethers.provider.send('hardhat_impersonateAccount', [aggregatorAddress]); + const aggregator = await ethers.getSigner(aggregatorAddress); + await deployer.sendTransaction({ + to: aggregatorAddress, + value: ethers.utils.parseEther('4'), + }); + + const batchAccInputHash = await proofOfEfficiencyContract.sequencedBatches(inputJson.newNumBatch); + expect(batchAccInputHash).to.be.equal(inputJson.newAccInputHash); + const { proofA, proofB, proofC, input, } = generateSolidityInputs(proofJson, publicJson); - const batchAccInputHashJs = calculateAccInputHash( - inputJson.oldAccInputHash, - calculateBatchHashData(inputJson.batchL2Data), - inputJson.globalExitRoot, - inputJson.timestamp, - inputJson.sequencerAddr, - ); - expect(batchAccInputHashJs).to.be.eq(inputJson.newAccInputHash); - + // Verify snark input const circuitInputStarkJS = await calculateSnarkInput( inputJson.oldStateRoot, inputJson.newStateRoot, inputJson.newLocalExitRoot, inputJson.oldAccInputHash, inputJson.newAccInputHash, - inputJson.numBatch - 1, - inputJson.numBatch, - inputJson.timestamp, - inputJson.chainId, + inputJson.oldNumBatch, + inputJson.newNumBatch, + inputJson.chainID, inputJson.aggregatorAddress, ); - expect(circuitInputStarkJS).to.be.eq(Scalar.e(input[0])); - - // Approve tokens - const maticAmount = await proofOfEfficiencyContract.TRUSTED_SEQUENCER_FEE(); - await expect( - maticTokenContract.connect(trustedSequencer).approve(proofOfEfficiencyContract.address, maticAmount), - ).to.emit(maticTokenContract, 'Approval'); - - // set timestamp for the sendBatch call - const sequence = { - transactions: inputJson.batchL2Data, - globalExitRoot: inputJson.globalExitRoot, - timestamp: inputJson.timestamp, - forceBatchesTimestamp: [], - }; - - // prapare globalExitRoot - await globalExitRootManager.setLastGlobalExitRootNum(1); - await globalExitRootManager.setLastGlobalExitRoot(sequence.globalExitRoot); - - await proofOfEfficiencyContract.setVerifiedBatch(inputJson.numBatch - 1); - await proofOfEfficiencyContract.setSequencedBatch(inputJson.numBatch - 1); - - const lastBatchSequenced = await proofOfEfficiencyContract.lastBatchSequenced(); - - await ethers.provider.send('evm_setNextBlockTimestamp', [sequence.timestamp]); - // Sequence Batches - await expect(proofOfEfficiencyContract.connect(trustedSequencer).sequenceBatches([sequence])) - .to.emit(proofOfEfficiencyContract, 'SequenceBatches') - .withArgs(Number(lastBatchSequenced) + 1); + expect(circuitInputStarkJS).to.be.eq(Scalar.e(input[0])); // aggregator forge the batch const { newLocalExitRoot } = inputJson; const { newStateRoot } = inputJson; - const { numBatch } = inputJson; - - // Set state and exit root - await proofOfEfficiencyContract.setStateRoot(inputJson.oldStateRoot); - await proofOfEfficiencyContract.setExitRoot(inputJson.oldLocalExitRoot); - - const { aggregatorAddress } = inputJson; - await ethers.provider.send('hardhat_impersonateAccount', [aggregatorAddress]); - const aggregator = await ethers.getSigner(aggregatorAddress); - await deployer.sendTransaction({ - to: aggregatorAddress, - value: ethers.utils.parseEther('4'), - }); + const { oldNumBatch } = inputJson; + const { newNumBatch } = inputJson; // Verify batch await expect( - proofOfEfficiencyContract.connect(aggregator).verifyBatch( + proofOfEfficiencyContract.connect(aggregator).verifyBatches( + oldNumBatch, + newNumBatch, newLocalExitRoot, newStateRoot, - numBatch, proofA, proofB, proofC, ), - ).to.emit(proofOfEfficiencyContract, 'VerifyBatch') - .withArgs(numBatch, aggregator.address); + ).to.emit(proofOfEfficiencyContract, 'VerifyBatches') + .withArgs(newNumBatch, newStateRoot, aggregator.address); }); }); diff --git a/test/contracts/real-prover/test-inputs/input.json b/test/contracts/real-prover/test-inputs/input.json index 6de53a4e4..62f5edd91 100644 --- a/test/contracts/real-prover/test-inputs/input.json +++ b/test/contracts/real-prover/test-inputs/input.json @@ -1,16 +1,1086 @@ { - "aggregatorAddress": "0x292c1b849531C841e422BD38a6F6c70Ca7Ae1e8F", - "batchL2Data": "0xed03843b9aca00825208943fab184622dc19b6109349b94811493bf2a4536288016345785d8a00008082057980805e020faf21744658c2c0d8058f1264533edc969d8dc8ca2cda0c04b2a2a0efaf1b0d326d5778de72715de172ce5a9f39e99ac4e8a760dc5f8c6d871180ca90641c", - "chainId": 1401, - "contractsBytecode": {}, - "db": {}, - "from": "", - "globalExitRoot": "0xa5188a238fcbb387479e5e3108339d0314e807a0b14d141390d723dbe8e45687", + "singleBatchData": [ + { + "oldStateRoot": "0x3ca39a7b5b419d1c50c89a8d15d1234f6cbc8baadb465efb609832bbc19f9026", + "newStateRoot": "0x61b31caaff4a8feedcc97d4da7b7f739ef8e17e384c57557135cba347a000c66", + "oldAccInputHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "newAccInputHash": "0x070c0c1abe776249fe4011d71b63a0cce202069584af3801d5df2dccf64a2d9a", + "newLocalExitRoot": "0x0000000000000000000000000000000000000000000000000000000000000000", + "oldNumBatch": 0, + "newNumBatch": 1, + "chainID": 1000, + "batchL2Data": "0xef80843b9aca00830186a0944d5cf5032b2a844602278b01199ed191a86c93ff8901314fb37062980000808203e88080f9ea8e90ae323e360a22bd0b1a972d15cb33df6ccbfbada4a0d49792d1164ea56029d84d5093a7186fb5bf2f1b7258d57e9c09ac89c4cb8eb44a3c961c4dd89b1b", + "globalExitRoot": "0x090bcaf734c4f06c93954a827b45a6e8c67b8e0fd1e0a35a1c5982d6961828f9", + "timestamp": 1944498031, + "sequencerAddr": "0x617b3a3528F9cDd6630fd3301B9c8911F7Bf063D", + "batchHashData": "0x0e8a7e57fe270ab7780cb10ca4b4a39792432701268b0d3a64e6870729e506d1", + "contractsBytecode": {}, + "db": { + "0x3ca39a7b5b419d1c50c89a8d15d1234f6cbc8baadb465efb609832bbc19f9026": [ + "cddc57c0d0fdd4ed", + "d24df1950f2d8f15", + "4c2f3e938869b82d", + "649e63bfe1247ba4", + "b69b044f5e694795", + "f57d81efba5d4445", + "339438195426ad0a", + "3efad1dd58c2259d", + "0000000000000001", + "0000000000000000", + "0000000000000000", + "0000000000000000" + ], + "0x3efad1dd58c2259d339438195426ad0af57d81efba5d4445b69b044f5e694795": [ + "00000000dea00000", + "0000000035c9adc5", + "0000000000000036", + "0000000000000000", + "0000000000000000", + "0000000000000000", + "0000000000000000", + "0000000000000000" + ] + } + }, + { + "oldStateRoot": "0x61b31caaff4a8feedcc97d4da7b7f739ef8e17e384c57557135cba347a000c66", + "newStateRoot": "0x29f3d65c49b538ea6072d1f9343fa2f0f223c1656f0432e9db337553963449d2", + "oldAccInputHash": "0x070c0c1abe776249fe4011d71b63a0cce202069584af3801d5df2dccf64a2d9a", + "newAccInputHash": "0x389bc63239f455750717b4efb5e9440d7b08751241b546e70ffe6075509d6c32", + "newLocalExitRoot": "0x0000000000000000000000000000000000000000000000000000000000000000", + "oldNumBatch": 1, + "newNumBatch": 2, + "chainID": 1000, + "batchL2Data": "0xee80843b9aca00830186a094617b3a3528f9cdd6630fd3301b9c8911f7bf063d881bc16d674ec80000808203e880804902102bdd9b91ae389102098dd7d8cb6e732410851223a1153cbe78b0c54d1e63bd7740451f2efcf88bbebdcc334ff3b3e3c332fbbf5703e4699124454663ba1b", + "globalExitRoot": "0x090bcaf734c4f06c93954a827b45a6e8c67b8e0fd1e0a35a1c5982d6961828f9", + "timestamp": 1944498032, + "sequencerAddr": "0x4d5Cf5032B2a844602278b01199ED191A86c93ff", + "batchHashData": "0xe2058260b8a93dc906fd253c2af22d4cb6136e6833b110a2655f6e0637952e07", + "contractsBytecode": {}, + "db": { + "0x61b31caaff4a8feedcc97d4da7b7f739ef8e17e384c57557135cba347a000c66": [ + "763daf39d9de9f97", + "ef7790a09a67a7ce", + "b7b8e536f40b4237", + "17f9ab2454f54c72", + "3eb5df14d4bdc47c", + "ef2191d6cdc0bf45", + "8f7fb26dd51e6103", + "55e7e82ae2a7af55", + "0000000000000000", + "0000000000000000", + "0000000000000000", + "0000000000000000" + ], + "0x17f9ab2454f54c72b7b8e536f40b4237ef7790a09a67a7ce763daf39d9de9f97": [ + "ae5eef5438ed0e3f", + "5c4895355f3e4439", + "cf826865dbad9c26", + "696681d0aa7090c5", + "e73738b8e2170ab5", + "535da0a6128c7d7a", + "8a3fb83b447c6895", + "5482cba788eb1c48", + "0000000000000000", + "0000000000000000", + "0000000000000000", + "0000000000000000" + ], + "0x696681d0aa7090c5cf826865dbad9c265c4895355f3e4439ae5eef5438ed0e3f": [ + "48a46a8e735c5308", + "13c524e0f8adc42e", + "4e2074fc48c70ae0", + "85bf62d5f65b9449", + "0e27e92c28029aec", + "98e0c826ec17d37a", + "65597af607e1af8b", + "ace107db9858f320", + "0000000000000001", + "0000000000000000", + "0000000000000000", + "0000000000000000" + ], + "0xace107db9858f32065597af607e1af8b98e0c826ec17d37a0e27e92c28029aec": [ + "0000000073e6af6f", + "0000000000000000", + "0000000000000000", + "0000000000000000", + "0000000000000000", + "0000000000000000", + "0000000000000000", + "0000000000000000" + ], + "0x5482cba788eb1c488a3fb83b447c6895535da0a6128c7d7ae73738b8e2170ab5": [ + "40508102aa6cabc7", + "501c2393cf10d5fd", + "107bff077a0db30f", + "ef85c8c00a446ae6", + "8970fbd8a8e998b0", + "78ae1b24331feafe", + "4b733a42af75c0d1", + "8bed5904c253e80b", + "0000000000000001", + "0000000000000000", + "0000000000000000", + "0000000000000000" + ], + "0x8bed5904c253e80b4b733a42af75c0d178ae1b24331feafe8970fbd8a8e998b0": [ + "00000000d2582b99", + "00000000dfc171ed", + "0000000070a9b538", + "000000003cf71b6a", + "00000000f175a4f8", + "0000000091639493", + "0000000084a5333b", + "00000000c8a0cb4b" + ], + "0x55e7e82ae2a7af558f7fb26dd51e6103ef2191d6cdc0bf453eb5df14d4bdc47c": [ + "1c4f1ba045cf5b95", + "bc713c1bbad32c2e", + "4281764be58d6a22", + "9e3757e8ec1272dd", + "bd7c49e380253fa5", + "e372e59a3b60703c", + "a451273cbbb1e1e5", + "98918ae937e2cf3e", + "0000000000000000", + "0000000000000000", + "0000000000000000", + "0000000000000000" + ], + "0x9e3757e8ec1272dd4281764be58d6a22bc713c1bbad32c2e1c4f1ba045cf5b95": [ + "0000000000000000", + "0000000000000000", + "0000000000000000", + "0000000000000000", + "95ab0f1313448263", + "014f76d48abc1a5a", + "abac7bde3231c7b3", + "725f5f7511034537", + "0000000000000000", + "0000000000000000", + "0000000000000000", + "0000000000000000" + ], + "0x725f5f7511034537abac7bde3231c7b3014f76d48abc1a5a95ab0f1313448263": [ + "f9afb01623f15c79", + "308cdd5740bc023c", + "322e20e4c0dcef74", + "87cca53735cec736", + "7fe9e067044258cd", + "c1c7a23630d74438", + "f6d76a253178385f", + "617c2a11f77ff536", + "0000000000000000", + "0000000000000000", + "0000000000000000", + "0000000000000000" + ], + "0x87cca53735cec736322e20e4c0dcef74308cdd5740bc023cf9afb01623f15c79": [ + "16dde42596b907f0", + "49015d7e991a1528", + "4a6eced6e8304885", + "305a6af4d7a8a00c", + "85b8fc8024db5e5c", + "cb9fc9e8676fe5f9", + "900609fbcf391183", + "41e5632337836bc5", + "0000000000000001", + "0000000000000000", + "0000000000000000", + "0000000000000000" + ], + "0x41e5632337836bc5900609fbcf391183cb9fc9e8676fe5f985b8fc8024db5e5c": [ + "0000000062980000", + "00000000314fb370", + "0000000000000001", + "0000000000000000", + "0000000000000000", + "0000000000000000", + "0000000000000000", + "0000000000000000" + ], + "0x617c2a11f77ff536f6d76a253178385fc1c7a23630d744387fe9e067044258cd": [ + "11c8725c9dfdb98b", + "7ffbf50ba07b42f8", + "7c18430af73c190c", + "1c3e76134671e490", + "d074b8cee5dcf415", + "2346a1b4c0f390e8", + "47969c1f5a6a25b1", + "da62fdf84a21108e", + "0000000000000001", + "0000000000000000", + "0000000000000000", + "0000000000000000" + ], + "0xda62fdf84a21108e47969c1f5a6a25b12346a1b4c0f390e8d074b8cee5dcf415": [ + "0000000000000001", + "0000000000000000", + "0000000000000000", + "0000000000000000", + "0000000000000000", + "0000000000000000", + "0000000000000000", + "0000000000000000" + ], + "0x98918ae937e2cf3ea451273cbbb1e1e5e372e59a3b60703cbd7c49e380253fa5": [ + "d43f2781cecb9cea", + "a8ef821b2d1a19c4", + "8d39c881d94606f2", + "571c41938781a282", + "c4066ba8c32e8a54", + "99ccbd6826c25549", + "1bbff6a9558c13d8", + "5c34e8b7e09eb9d2", + "0000000000000000", + "0000000000000000", + "0000000000000000", + "0000000000000000" + ], + "0x571c41938781a2828d39c881d94606f2a8ef821b2d1a19c4d43f2781cecb9cea": [ + "442f7573a4097cf2", + "3520bc74612a2ea9", + "143ce4e61bf52251", + "da69a3c4a8007a5a", + "d074b8cee5dcf415", + "2346a1b4c0f390e8", + "47969c1f5a6a25b1", + "da62fdf84a21108e", + "0000000000000001", + "0000000000000000", + "0000000000000000", + "0000000000000000" + ], + "0x5c34e8b7e09eb9d21bbff6a9558c13d899ccbd6826c25549c4066ba8c32e8a54": [ + "66ee2be0687eea76", + "6926f8ca8796c78a", + "26179f49c434dc16", + "649e63bfe1247ba4", + "8d6f4bb1f77e3231", + "e8588d537a7fd215", + "06643ffe76ca3417", + "ac6fb937ba074e4f", + "0000000000000001", + "0000000000000000", + "0000000000000000", + "0000000000000000" + ], + "0xac6fb937ba074e4f06643ffe76ca3417e8588d537a7fd2158d6f4bb1f77e3231": [ + "000000007c080000", + "000000000479fa55", + "0000000000000035", + "0000000000000000", + "0000000000000000", + "0000000000000000", + "0000000000000000", + "0000000000000000" + ] + } + }, + { + "oldStateRoot": "0x29f3d65c49b538ea6072d1f9343fa2f0f223c1656f0432e9db337553963449d2", + "newStateRoot": "0xdda07776ee34dbee557cd839abeb522b89540a9a670cea4856af7bdc40396a86", + "oldAccInputHash": "0x389bc63239f455750717b4efb5e9440d7b08751241b546e70ffe6075509d6c32", + "newAccInputHash": "0xad1915669aaf61a83bbfad1f4360c1a32245e38ffb67b1afa68c825135890fc9", + "newLocalExitRoot": "0x0000000000000000000000000000000000000000000000000000000000000000", + "oldNumBatch": 2, + "newNumBatch": 3, + "chainID": 1000, + "batchL2Data": "0xee01843b9aca00830186a094617b3a3528f9cdd6630fd3301b9c8911f7bf063d880de0b6b3a7640000808203e88080d71f728226f6e692289eab9f2c9565036ffda72650c88e2b9c001b95a5f1a2e647612249728261ab90977a2c50b22b8fd486f88b356a921f4487327e5d2775651cee02843b9aca00830186a094617b3a3528f9cdd6630fd3301b9c8911f7bf063d880de0b6b3a7640000808203e880808ab4d93e176f0762b48dfd8382f97200e134eb1e8e6423951d70af8f99e53c805b61ee8721981423a592c0c1af55c482bed43a45e2e3c1ecc70d350e2083ebc11b", + "globalExitRoot": "0x090bcaf734c4f06c93954a827b45a6e8c67b8e0fd1e0a35a1c5982d6961828f9", + "timestamp": 1944498032, + "sequencerAddr": "0x4d5Cf5032B2a844602278b01199ED191A86c93ff", + "batchHashData": "0xe0b9d084dae9d015aaf65bc9b013b37c12b3cc31ae4e9590296c50eda518d8a1", + "contractsBytecode": {}, + "db": { + "0x29f3d65c49b538ea6072d1f9343fa2f0f223c1656f0432e9db337553963449d2": [ + "1018ebe383c647ad", + "cd43656bcbfc3732", + "0b77cf26ccee9906", + "eacbc39a60f6d880", + "e943bd867c50d30b", + "2c8f4640b65622b0", + "95925ccc615890b0", + "7cdcd8ebadd60547", + "0000000000000000", + "0000000000000000", + "0000000000000000", + "0000000000000000" + ], + "0xeacbc39a60f6d8800b77cf26ccee9906cd43656bcbfc37321018ebe383c647ad": [ + "7244456069b61fb9", + "f12d0c78f0b1c456", + "943aaafaef062428", + "34f19f4397af5227", + "8fd6f5c37f9bb325", + "950a04795fbeb2db", + "be6612ff525b0376", + "f00fadceb542d347", + "0000000000000000", + "0000000000000000", + "0000000000000000", + "0000000000000000" + ], + "0x34f19f4397af5227943aaafaef062428f12d0c78f0b1c4567244456069b61fb9": [ + "48a46a8e735c5308", + "13c524e0f8adc42e", + "4e2074fc48c70ae0", + "85bf62d5f65b9449", + "6fb863e332cedfef", + "7ba318532e17ee63", + "7d196528afb0b2b3", + "1e96f77a2789e4a8", + "0000000000000001", + "0000000000000000", + "0000000000000000", + "0000000000000000" + ], + "0x1e96f77a2789e4a87d196528afb0b2b37ba318532e17ee636fb863e332cedfef": [ + "0000000073e6af70", + "0000000000000000", + "0000000000000000", + "0000000000000000", + "0000000000000000", + "0000000000000000", + "0000000000000000", + "0000000000000000" + ], + "0xf00fadceb542d347be6612ff525b0376950a04795fbeb2db8fd6f5c37f9bb325": [ + "0000000000000000", + "0000000000000000", + "0000000000000000", + "0000000000000000", + "4edf8b56eb3c5376", + "1773c8ab7b8f07ff", + "6893cb015c9115ed", + "5d67b5c2b28c5a0c", + "0000000000000000", + "0000000000000000", + "0000000000000000", + "0000000000000000" + ], + "0x5d67b5c2b28c5a0c6893cb015c9115ed1773c8ab7b8f07ff4edf8b56eb3c5376": [ + "68dc9aa005dd4256", + "052b594470e09489", + "b1b8073c14badad7", + "6e27d2fec2bd936d", + "0000000000000000", + "0000000000000000", + "0000000000000000", + "0000000000000000", + "0000000000000000", + "0000000000000000", + "0000000000000000", + "0000000000000000" + ], + "0x6e27d2fec2bd936db1b8073c14badad7052b594470e0948968dc9aa005dd4256": [ + "0000000000000000", + "0000000000000000", + "0000000000000000", + "0000000000000000", + "cc2cd52e96562eb5", + "0df53656880949f3", + "34cc70683f25a9f4", + "05c87aa905c964fc", + "0000000000000000", + "0000000000000000", + "0000000000000000", + "0000000000000000" + ], + "0x05c87aa905c964fc34cc70683f25a9f40df53656880949f3cc2cd52e96562eb5": [ + "0913ff64639f31f1", + "5f9f9c7ae3c1a51b", + "6ce95a01c39f7eb4", + "98fd5d75b176ec04", + "fa21c802e3203385", + "6994f11f82f251e6", + "f0bd59a452d4d0ee", + "e8ee44891402527a", + "0000000000000000", + "0000000000000000", + "0000000000000000", + "0000000000000000" + ], + "0x98fd5d75b176ec046ce95a01c39f7eb45f9f9c7ae3c1a51b0913ff64639f31f1": [ + "37866cdbe5877c88", + "2d62534cb92ee170", + "6bf2c9fd6a3aa16c", + "325ba19f4ab866aa", + "d074b8cee5dcf415", + "2346a1b4c0f390e8", + "47969c1f5a6a25b1", + "da62fdf84a21108e", + "0000000000000001", + "0000000000000000", + "0000000000000000", + "0000000000000000" + ], + "0xda62fdf84a21108e47969c1f5a6a25b12346a1b4c0f390e8d074b8cee5dcf415": [ + "0000000000000001", + "0000000000000000", + "0000000000000000", + "0000000000000000", + "0000000000000000", + "0000000000000000", + "0000000000000000", + "0000000000000000" + ], + "0xe8ee44891402527af0bd59a452d4d0ee6994f11f82f251e6fa21c802e3203385": [ + "20284081553655e3", + "280e11c9e7886afe", + "083dff83bd06d987", + "77c2e46005223573", + "8970fbd8a8e998b0", + "78ae1b24331feafe", + "4b733a42af75c0d1", + "8bed5904c253e80b", + "0000000000000001", + "0000000000000000", + "0000000000000000", + "0000000000000000" + ], + "0x8bed5904c253e80b4b733a42af75c0d178ae1b24331feafe8970fbd8a8e998b0": [ + "00000000d2582b99", + "00000000dfc171ed", + "0000000070a9b538", + "000000003cf71b6a", + "00000000f175a4f8", + "0000000091639493", + "0000000084a5333b", + "00000000c8a0cb4b" + ], + "0x7cdcd8ebadd6054795925ccc615890b02c8f4640b65622b0e943bd867c50d30b": [ + "a79f72adf8dd62fa", + "70063394d1df00c5", + "5f821a2304f84d60", + "1934fff4c5941ee1", + "59e2c5ebf37b16c4", + "45e8448258381bee", + "bc82aa48f01be494", + "e392fbc37bc4d6e2", + "0000000000000000", + "0000000000000000", + "0000000000000000", + "0000000000000000" + ], + "0x1934fff4c5941ee15f821a2304f84d6070063394d1df00c5a79f72adf8dd62fa": [ + "0000000000000000", + "0000000000000000", + "0000000000000000", + "0000000000000000", + "8c9dd4d6dd9556e2", + "1f3ffcfcc152941f", + "cc6de1a34247b76a", + "20cb4f0747788c63", + "0000000000000000", + "0000000000000000", + "0000000000000000", + "0000000000000000" + ], + "0x20cb4f0747788c63cc6de1a34247b76a1f3ffcfcc152941f8c9dd4d6dd9556e2": [ + "f7edfb994664d84d", + "161450b849bf3951", + "3e9f9bb44d29def1", + "436c8be3776a6612", + "8f641912be821d66", + "9c74208e5f23cc3d", + "dff4e79c0aa1dd7a", + "a56cb315200b6a24", + "0000000000000000", + "0000000000000000", + "0000000000000000", + "0000000000000000" + ], + "0x436c8be3776a66123e9f9bb44d29def1161450b849bf3951f7edfb994664d84d": [ + "16dde42596b907f0", + "49015d7e991a1528", + "4a6eced6e8304885", + "305a6af4d7a8a00c", + "18c9513b1e7d9904", + "0b6835f79f991d71", + "a8751b2d01a9def9", + "5bc67a31279947d0", + "0000000000000001", + "0000000000000000", + "0000000000000000", + "0000000000000000" + ], + "0x5bc67a31279947d0a8751b2d01a9def90b6835f79f991d7118c9513b1e7d9904": [ + "0000000013d00000", + "00000000158e4609", + "0000000000000001", + "0000000000000000", + "0000000000000000", + "0000000000000000", + "0000000000000000", + "0000000000000000" + ], + "0xa56cb315200b6a24dff4e79c0aa1dd7a9c74208e5f23cc3d8f641912be821d66": [ + "11c8725c9dfdb98b", + "7ffbf50ba07b42f8", + "7c18430af73c190c", + "1c3e76134671e490", + "7615b40971dc29f2", + "303a082109d64fe0", + "54f2216c0b37148d", + "adb5787a1f8676b5", + "0000000000000001", + "0000000000000000", + "0000000000000000", + "0000000000000000" + ], + "0xadb5787a1f8676b554f2216c0b37148d303a082109d64fe07615b40971dc29f2": [ + "0000000000000002", + "0000000000000000", + "0000000000000000", + "0000000000000000", + "0000000000000000", + "0000000000000000", + "0000000000000000", + "0000000000000000" + ], + "0xe392fbc37bc4d6e2bc82aa48f01be49445e8448258381bee59e2c5ebf37b16c4": [ + "7843a2ed5bec46b1", + "a5be26d73ae537cf", + "8efd80841dd5d382", + "ef28409ad26e7282", + "88de93befbb5aaa4", + "0daef15f24ea3e20", + "02ef2f6176cbbf97", + "69d5f78b6a46aa1d", + "0000000000000000", + "0000000000000000", + "0000000000000000", + "0000000000000000" + ], + "0xef28409ad26e72828efd80841dd5d382a5be26d73ae537cf7843a2ed5bec46b1": [ + "205c77d6b9f5eefc", + "28f8d6d672c9506b", + "4eb97b136c3768b6", + "1a621134ad618159", + "dce2eeec6b8d221c", + "1dc936ab2b3ea242", + "3c4663d36bdee9df", + "63533e6d4b9e1288", + "0000000000000000", + "0000000000000000", + "0000000000000000", + "0000000000000000" + ], + "0x1a621134ad6181594eb97b136c3768b628f8d6d672c9506b205c77d6b9f5eefc": [ + "442f7573a4097cf2", + "3520bc74612a2ea9", + "143ce4e61bf52251", + "6d34d1e254003d2d", + "d074b8cee5dcf415", + "2346a1b4c0f390e8", + "47969c1f5a6a25b1", + "da62fdf84a21108e", + "0000000000000001", + "0000000000000000", + "0000000000000000", + "0000000000000000" + ], + "0x63533e6d4b9e12883c4663d36bdee9df1dc936ab2b3ea242dce2eeec6b8d221c": [ + "7160cca03ed221b2", + "347a16f174192c56", + "2a3e1067115745c2", + "5c330b93d4700b22", + "4e0a8f01cc63c656", + "f9b87ebb3b907221", + "e2675816f35ac228", + "d806a369a18d0eb0", + "0000000000000001", + "0000000000000000", + "0000000000000000", + "0000000000000000" + ], + "0xd806a369a18d0eb0e2675816f35ac228f9b87ebb3b9072214e0a8f01cc63c656": [ + "00000000faa6b288", + "000000004777b8f2", + "00000000a99b03b4", + "00000000186c44ac", + "000000007b5f11f5", + "000000008173b0e3", + "00000000c3ec5a6e", + "00000000ca213a0c" + ], + "0x69d5f78b6a46aa1d02ef2f6176cbbf970daef15f24ea3e2088de93befbb5aaa4": [ + "66ee2be0687eea76", + "6926f8ca8796c78a", + "26179f49c434dc16", + "649e63bfe1247ba4", + "5e83cc15f9f05fa9", + "4098e44c091c5d81", + "1a9584e1365c3ec9", + "021fc6d3425cd2f6", + "0000000000000001", + "0000000000000000", + "0000000000000000", + "0000000000000000" + ], + "0x021fc6d3425cd2f61a9584e1365c3ec94098e44c091c5d815e83cc15f9f05fa9": [ + "00000000cad00000", + "00000000203b67bc", + "0000000000000035", + "0000000000000000", + "0000000000000000", + "0000000000000000", + "0000000000000000", + "0000000000000000" + ] + } + }, + { + "oldStateRoot": "0xdda07776ee34dbee557cd839abeb522b89540a9a670cea4856af7bdc40396a86", + "newStateRoot": "0x46620e8b8298f31c6999d0547d716a5c1d0e754cff5f1b85ed75eb10cdbb623f", + "oldAccInputHash": "0xad1915669aaf61a83bbfad1f4360c1a32245e38ffb67b1afa68c825135890fc9", + "newAccInputHash": "0xbd71644a8d0eff3d5ae771310c7f15c097dddffe7199e6db738479b01729abfe", + "newLocalExitRoot": "0x0000000000000000000000000000000000000000000000000000000000000000", + "oldNumBatch": 3, + "newNumBatch": 4, + "chainID": 1000, + "batchL2Data": "0xee01843b9aca00830186a0944d5cf5032b2a844602278b01199ed191a86c93ff883782dace9d900000808203e88080d7d8b23bdec805a0c758de3e2289077b1e4c8401ddff73c7e59e2f9351d14f5f6f04e7bbb69548737581cd5a6e3bac8695776bfd41dc1c8fc9921c4b08e008031bee02843b9aca00830186a0944d5cf5032b2a844602278b01199ed191a86c93ff8829a2241af62c0000808203e88080ee8448de88596fff6a98af2e603c9a10ccafa114815e844c8b7e8c52cb3fd1470d81101bb5a4a0aa5f459f29da0f6e95cd9e178774f0f3f1c48733618d7bd2231c", + "globalExitRoot": "0x090bcaf734c4f06c93954a827b45a6e8c67b8e0fd1e0a35a1c5982d6961828f9", + "timestamp": 1944498032, + "sequencerAddr": "0x617b3a3528F9cDd6630fd3301B9c8911F7Bf063D", + "batchHashData": "0x763d3272e66b10bef69106ea07750823c580d20802fb1141b69b5ec56790a449", + "contractsBytecode": {}, + "db": { + "0xdda07776ee34dbee557cd839abeb522b89540a9a670cea4856af7bdc40396a86": [ + "40dc16d040c6ba85", + "b2698618c8f843f9", + "f0af1ef6889f802f", + "fc2a002025d1be5b", + "7d7c02eae0895a66", + "5948c213d37bb227", + "5e531c61117ad836", + "bd75163b28195b06", + "0000000000000000", + "0000000000000000", + "0000000000000000", + "0000000000000000" + ], + "0xfc2a002025d1be5bf0af1ef6889f802fb2698618c8f843f940dc16d040c6ba85": [ + "7244456069b61fb9", + "f12d0c78f0b1c456", + "943aaafaef062428", + "34f19f4397af5227", + "4ea7b634b1655b6c", + "2e77cc35af85d3b2", + "ee0023cd0349c382", + "dbb1f8deeca11a8c", + "0000000000000000", + "0000000000000000", + "0000000000000000", + "0000000000000000" + ], + "0x34f19f4397af5227943aaafaef062428f12d0c78f0b1c4567244456069b61fb9": [ + "48a46a8e735c5308", + "13c524e0f8adc42e", + "4e2074fc48c70ae0", + "85bf62d5f65b9449", + "6fb863e332cedfef", + "7ba318532e17ee63", + "7d196528afb0b2b3", + "1e96f77a2789e4a8", + "0000000000000001", + "0000000000000000", + "0000000000000000", + "0000000000000000" + ], + "0x1e96f77a2789e4a87d196528afb0b2b37ba318532e17ee636fb863e332cedfef": [ + "0000000073e6af70", + "0000000000000000", + "0000000000000000", + "0000000000000000", + "0000000000000000", + "0000000000000000", + "0000000000000000", + "0000000000000000" + ], + "0xdbb1f8deeca11a8cee0023cd0349c3822e77cc35af85d3b24ea7b634b1655b6c": [ + "35ac5b0725e77088", + "c618dbf7e28aca4a", + "3bba9183ae3604c1", + "5443b2d236f92f8c", + "ccb0872229d9428a", + "392384aa92e3b62d", + "a04678bfaf40c3aa", + "7d38466a7779520d", + "0000000000000000", + "0000000000000000", + "0000000000000000", + "0000000000000000" + ], + "0x5443b2d236f92f8c3bba9183ae3604c1c618dbf7e28aca4a35ac5b0725e77088": [ + "02aa707693b30b9c", + "6cfec68811f9460f", + "5180f56a58386690", + "bcc3f4d2c3de39da", + "ebceab13bad9b083", + "ace90eb2eea0f82e", + "49ddab955b7b0641", + "793f19b91b3ce843", + "0000000000000001", + "0000000000000000", + "0000000000000000", + "0000000000000000" + ], + "0x793f19b91b3ce84349ddab955b7b0641ace90eb2eea0f82eebceab13bad9b083": [ + "0000000093a18eac", + "0000000087949e1c", + "0000000013081c6e", + "000000000a969138", + "000000008cd388cd", + "0000000076a8a603", + "000000000b052f92", + "000000002a5654e4" + ], + "0x7d38466a7779520da04678bfaf40c3aa392384aa92e3b62dccb0872229d9428a": [ + "de85f6b6f35eb434", + "ff72d70ff218137c", + "3cddc2a902a47f90", + "bf636d7f9cca148b", + "0000000000000000", + "0000000000000000", + "0000000000000000", + "0000000000000000", + "0000000000000000", + "0000000000000000", + "0000000000000000", + "0000000000000000" + ], + "0xbf636d7f9cca148b3cddc2a902a47f90ff72d70ff218137cde85f6b6f35eb434": [ + "0000000000000000", + "0000000000000000", + "0000000000000000", + "0000000000000000", + "f6043722b533d688", + "cccaa4ea742a40a8", + "e1dc1c6be86ad10d", + "86ed3025c1099697", + "0000000000000000", + "0000000000000000", + "0000000000000000", + "0000000000000000" + ], + "0x86ed3025c1099697e1dc1c6be86ad10dcccaa4ea742a40a8f6043722b533d688": [ + "94c9b6c977fd6b62", + "63d51a718f1d4595", + "0af1d54b83576182", + "e7ead4cf47b5f6a7", + "fa21c802e3203385", + "6994f11f82f251e6", + "f0bd59a452d4d0ee", + "e8ee44891402527a", + "0000000000000000", + "0000000000000000", + "0000000000000000", + "0000000000000000" + ], + "0xe7ead4cf47b5f6a70af1d54b8357618263d51a718f1d459594c9b6c977fd6b62": [ + "37866cdbe5877c88", + "2d62534cb92ee170", + "6bf2c9fd6a3aa16c", + "325ba19f4ab866aa", + "cad6cdbfa198be91", + "cd0e941b466a39b4", + "a7e6b3f9d3f197d5", + "a2135065f1605059", + "0000000000000001", + "0000000000000000", + "0000000000000000", + "0000000000000000" + ], + "0xa2135065f1605059a7e6b3f9d3f197d5cd0e941b466a39b4cad6cdbfa198be91": [ + "0000000000000003", + "0000000000000000", + "0000000000000000", + "0000000000000000", + "0000000000000000", + "0000000000000000", + "0000000000000000", + "0000000000000000" + ], + "0xe8ee44891402527af0bd59a452d4d0ee6994f11f82f251e6fa21c802e3203385": [ + "20284081553655e3", + "280e11c9e7886afe", + "083dff83bd06d987", + "77c2e46005223573", + "8970fbd8a8e998b0", + "78ae1b24331feafe", + "4b733a42af75c0d1", + "8bed5904c253e80b", + "0000000000000001", + "0000000000000000", + "0000000000000000", + "0000000000000000" + ], + "0x8bed5904c253e80b4b733a42af75c0d178ae1b24331feafe8970fbd8a8e998b0": [ + "00000000d2582b99", + "00000000dfc171ed", + "0000000070a9b538", + "000000003cf71b6a", + "00000000f175a4f8", + "0000000091639493", + "0000000084a5333b", + "00000000c8a0cb4b" + ], + "0xbd75163b28195b065e531c61117ad8365948c213d37bb2277d7c02eae0895a66": [ + "19efe935ba345c27", + "167065d5fb45cf79", + "c99a67590ae8aea9", + "2f462c5fc4528cf8", + "5eba2d109e922180", + "da049cc067bea39f", + "5ab65c767fe694f5", + "7f26bc92a5af4db7", + "0000000000000000", + "0000000000000000", + "0000000000000000", + "0000000000000000" + ], + "0x2f462c5fc4528cf8c99a67590ae8aea9167065d5fb45cf7919efe935ba345c27": [ + "0000000000000000", + "0000000000000000", + "0000000000000000", + "0000000000000000", + "368b0865baecd9c2", + "7775aaf79f32f5c8", + "54387e71b92da6f2", + "b3a335227978ed6a", + "0000000000000000", + "0000000000000000", + "0000000000000000", + "0000000000000000" + ], + "0xb3a335227978ed6a54387e71b92da6f27775aaf79f32f5c8368b0865baecd9c2": [ + "9e0f700ca62c18b6", + "ad28cf8357819cbe", + "5755654f95ffb169", + "080d700756d33b65", + "f98791bc36627ac1", + "9d19818035e75ffc", + "6e5b6469442f0ab2", + "0d0c1d7a608e2f53", + "0000000000000000", + "0000000000000000", + "0000000000000000", + "0000000000000000" + ], + "0x080d700756d33b655755654f95ffb169ad28cf8357819cbe9e0f700ca62c18b6": [ + "16dde42596b907f0", + "49015d7e991a1528", + "4a6eced6e8304885", + "305a6af4d7a8a00c", + "90e98ea2a6fee2b3", + "09b4104e4b0f1f42", + "3c656749691cf3af", + "4b1d11a97ceff72f", + "0000000000000001", + "0000000000000000", + "0000000000000000", + "0000000000000000" + ], + "0x4b1d11a97ceff72f3c656749691cf3af09b4104e4b0f1f4290e98ea2a6fee2b3": [ + "00000000c5080000", + "00000000f9ccd8a1", + "0000000000000000", + "0000000000000000", + "0000000000000000", + "0000000000000000", + "0000000000000000", + "0000000000000000" + ], + "0x0d0c1d7a608e2f536e5b6469442f0ab29d19818035e75ffcf98791bc36627ac1": [ + "0000000000000000", + "0000000000000000", + "0000000000000000", + "0000000000000000", + "0589b4d3d34413e4", + "17f2dd178ca7a06c", + "0f6d82a74b80007e", + "0dbd903a50b61fac", + "0000000000000000", + "0000000000000000", + "0000000000000000", + "0000000000000000" + ], + "0x0dbd903a50b61fac0f6d82a74b80007e17f2dd178ca7a06c0589b4d3d34413e4": [ + "e37ad7988d2734e1", + "b48ff1a2d485bf8b", + "b8479aa634e0301f", + "02299c9ad4460ab2", + "7957101cb7ff1c74", + "ec1ec8d879a1614f", + "86ea87d83fdcc756", + "d5b032ca00c9d4d6", + "0000000000000000", + "0000000000000000", + "0000000000000000", + "0000000000000000" + ], + "0x02299c9ad4460ab2b8479aa634e0301fb48ff1a2d485bf8be37ad7988d2734e1": [ + "08e4392e4efedcc5", + "3ffdfa85d03da17c", + "7c18430af73c190c", + "1c3e76134671e490", + "a27c610b929c5373", + "d822841a75cff991", + "d5fd2275e32107a8", + "eebb7a70544ab6b3", + "0000000000000001", + "0000000000000000", + "0000000000000000", + "0000000000000000" + ], + "0xeebb7a70544ab6b3d5fd2275e32107a8d822841a75cff991a27c610b929c5373": [ + "0000000000000004", + "0000000000000000", + "0000000000000000", + "0000000000000000", + "0000000000000000", + "0000000000000000", + "0000000000000000", + "0000000000000000" + ], + "0xd5b032ca00c9d4d686ea87d83fdcc756ec1ec8d879a1614f7957101cb7ff1c74": [ + "25fd1dddf4354e7c", + "2b1a0e19c11639a0", + "4b2ece4042b09d92", + "58a82e472c5b400b", + "e40e5d8032e287d0", + "ddc592fc73ab0b86", + "ed3905301252378f", + "46abddcc5b6acb19", + "0000000000000001", + "0000000000000000", + "0000000000000000", + "0000000000000000" + ], + "0x46abddcc5b6acb19ed3905301252378fddc592fc73ab0b86e40e5d8032e287d0": [ + "000000003a81fe5f", + "00000000370767ab", + "00000000d45c560b", + "00000000f45450eb", + "000000000a951648", + "00000000a006c34f", + "00000000ce4715e3", + "00000000618ee1d1" + ], + "0x7f26bc92a5af4db75ab65c767fe694f5da049cc067bea39f5eba2d109e922180": [ + "7843a2ed5bec46b1", + "a5be26d73ae537cf", + "8efd80841dd5d382", + "ef28409ad26e7282", + "2b6429747753e992", + "8de937d8391bc07c", + "0ba2467e6b2a03b8", + "43ce72d79779e851", + "0000000000000000", + "0000000000000000", + "0000000000000000", + "0000000000000000" + ], + "0xef28409ad26e72828efd80841dd5d382a5be26d73ae537cf7843a2ed5bec46b1": [ + "205c77d6b9f5eefc", + "28f8d6d672c9506b", + "4eb97b136c3768b6", + "1a621134ad618159", + "dce2eeec6b8d221c", + "1dc936ab2b3ea242", + "3c4663d36bdee9df", + "63533e6d4b9e1288", + "0000000000000000", + "0000000000000000", + "0000000000000000", + "0000000000000000" + ], + "0x1a621134ad6181594eb97b136c3768b628f8d6d672c9506b205c77d6b9f5eefc": [ + "442f7573a4097cf2", + "3520bc74612a2ea9", + "143ce4e61bf52251", + "6d34d1e254003d2d", + "d074b8cee5dcf415", + "2346a1b4c0f390e8", + "47969c1f5a6a25b1", + "da62fdf84a21108e", + "0000000000000001", + "0000000000000000", + "0000000000000000", + "0000000000000000" + ], + "0xda62fdf84a21108e47969c1f5a6a25b12346a1b4c0f390e8d074b8cee5dcf415": [ + "0000000000000001", + "0000000000000000", + "0000000000000000", + "0000000000000000", + "0000000000000000", + "0000000000000000", + "0000000000000000", + "0000000000000000" + ], + "0x63533e6d4b9e12883c4663d36bdee9df1dc936ab2b3ea242dce2eeec6b8d221c": [ + "7160cca03ed221b2", + "347a16f174192c56", + "2a3e1067115745c2", + "5c330b93d4700b22", + "4e0a8f01cc63c656", + "f9b87ebb3b907221", + "e2675816f35ac228", + "d806a369a18d0eb0", + "0000000000000001", + "0000000000000000", + "0000000000000000", + "0000000000000000" + ], + "0xd806a369a18d0eb0e2675816f35ac228f9b87ebb3b9072214e0a8f01cc63c656": [ + "00000000faa6b288", + "000000004777b8f2", + "00000000a99b03b4", + "00000000186c44ac", + "000000007b5f11f5", + "000000008173b0e3", + "00000000c3ec5a6e", + "00000000ca213a0c" + ], + "0x43ce72d79779e8510ba2467e6b2a03b88de937d8391bc07c2b6429747753e992": [ + "66ee2be0687eea76", + "6926f8ca8796c78a", + "26179f49c434dc16", + "649e63bfe1247ba4", + "67bbfffd0982dfa4", + "93c661c88448b5ed", + "cec2687622ccc942", + "4e709c8e17913749", + "0000000000000001", + "0000000000000000", + "0000000000000000", + "0000000000000000" + ], + "0x4e709c8e17913749cec2687622ccc94293c661c88448b5ed67bbfffd0982dfa4": [ + "0000000019980000", + "000000003bfcd524", + "0000000000000035", + "0000000000000000", + "0000000000000000", + "0000000000000000", + "0000000000000000", + "0000000000000000" + ] + } + } + ], + "oldStateRoot": "0x3ca39a7b5b419d1c50c89a8d15d1234f6cbc8baadb465efb609832bbc19f9026", + "oldAccInputHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "oldNumBatch": 0, + "newStateRoot": "0x46620e8b8298f31c6999d0547d716a5c1d0e754cff5f1b85ed75eb10cdbb623f", + "newAccInputHash": "0xbd71644a8d0eff3d5ae771310c7f15c097dddffe7199e6db738479b01729abfe", "newLocalExitRoot": "0x0000000000000000000000000000000000000000000000000000000000000000", - "newStateRoot": "0xa37d06ecd291d1269a9f532535d7a269260959ef3c07b384947482cfc3550c15", - "numBatch": 7, - "oldLocalExitRoot": "0x0000000000000000000000000000000000000000000000000000000000000000", - "oldStateRoot": "0xc6b9bf11177fa5ed4435be8c6a53e19723f9ed187f9ed7b1bec4d404919543b6", - "sequencerAddr": "0x292c1b849531C841e422BD38a6F6c70Ca7Ae1e8F", - "timestamp": 1664801979 -} \ No newline at end of file + "newNumBatch": 4, + "chainID": 1000, + "aggregatorAddress": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", + "inputSnark": "0x0ddde9228cc399ab644e2c625c328a0bd5fc0c9b29361a9aea0a9fce01879c9f" + } \ No newline at end of file diff --git a/test/contracts/real-prover/test-inputs/proof.json b/test/contracts/real-prover/test-inputs/proof.json index 699c0c16a..bdeced9e2 100644 --- a/test/contracts/real-prover/test-inputs/proof.json +++ b/test/contracts/real-prover/test-inputs/proof.json @@ -1,17 +1,18 @@ + { "pi_a": [ - "17725108043689880547430607796818332710218314664673646389603828095215371918732", - "1335461676644128156881925797208139685107783862126666539158173153568879099363", + "92720107533401008849053778558049219855365383482526087085452173073370760805", + "13826838703389754954030947414105187663814967588576084571406321808291125843435", "1" ], "pi_b": [ [ - "16304460975589797287003167247933239446176783294882676519884713714599437456843", - "16640637784844881573042215118601236347460897560434471171094286617480508294627" + "5475858851212457450955721661678670781624308838111317524369599592504160527901", + "17941023582557154607979891126610962501834920288981572906618674423793027994818" ], [ - "6303774052270993994311235288724936877187618510707699010859529060893477592809", - "8991077555601611883015086273110156838576071012533949653761592875588327996919" + "133141362172752167181464746908147091611715494326322188365259936101242370441", + "15283277295854565461827967770178761605443770145623911758153795385044736856957" ], [ "1", @@ -19,8 +20,8 @@ ] ], "pi_c": [ - "9598701645615535400366987688017391893737769376674613307030003600552498644879", - "19085338477615102388762142090535176605512726097732361175107940295515808620357", + "1242071955068832938180609069213946031298425379167551849613080735211649206690", + "9399857286493874866222544675489603818689332155558918500289148827560827908499", "1" ], "protocol": "groth16" diff --git a/test/contracts/real-prover/test-inputs/public.json b/test/contracts/real-prover/test-inputs/public.json index 8c405e042..4a2c29301 100644 --- a/test/contracts/real-prover/test-inputs/public.json +++ b/test/contracts/real-prover/test-inputs/public.json @@ -1,3 +1,3 @@ [ - "1195089806287684402577889461684836130221392963785446391283718830064330600935" + "6723147925435946818494446359291442548017141378035998979955073992179800955505" ] \ No newline at end of file