6101606040523480156200001257600080fd5b506040518060400160405280600d81526020016c5261726974797377617020563160981b815250604051806040016040528060068152602001655241522d563160d01b8152508160039081620000699190620001ba565b506004620000788282620001ba565b505060016005555033608081905260408051630890357360e41b8152905163890357309160048082019260c0929091908290030181865afa158015620000c2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000e891906200029f565b61014052610120526001600160a01b039081166101005290811660e05290811660c0521660a0526200031b565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200014057607f821691505b6020821081036200016157634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620001b557600081815260208120601f850160051c81016020861015620001905750805b601f850160051c820191505b81811015620001b1578281556001016200019c565b5050505b505050565b81516001600160401b03811115620001d657620001d662000115565b620001ee81620001e784546200012b565b8462000167565b602080601f8311600181146200022657600084156200020d5750858301515b600019600386901b1c1916600185901b178555620001b1565b600085815260208120601f198616915b82811015620002575788860151825594840194600190910190840162000236565b5085821015620002765787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6001600160a01b03811681146200029c57600080fd5b50565b60008060008060008060c08789031215620002b957600080fd5b8651620002c68162000286565b6020880151909650620002d98162000286565b6040880151909550620002ec8162000286565b6060880151909450620002ff8162000286565b809350506080870151915060a087015190509295509295509295565b60805160a05160c05160e0516101005161012051610140516145e4620003f46000396000818161069401528181610d3201526110c70152600081816106fc01528181610a5c01528181610d02015281816110970152611d2a01526000610730015260006106c80152600061027b0152600081816104020152818161092001528181610d66015281816111ea015281816117f701528181611dbc015261213f0152600081816105d801528181610e6901528181611328015281816114fc015281816115ab015281816117570152612d6101526145e46000f3fe6080604052600436106102025760003560e01c80637a078b601161011d578063b48adafa116100b0578063e52014681161007f578063ed0352b711610064578063ed0352b7146106b6578063f3a250f9146106ea578063f7ee058d1461071e57600080fd5b8063e520146814610660578063e9ade90e1461068257600080fd5b8063b48adafa14610591578063c45a0155146105c6578063cb3a1936146105fa578063dd62ed3e1461061a57600080fd5b8063a457c2d7116100ec578063a457c2d714610511578063a9059cbb14610531578063ad615dec14610551578063b2e0a36d1461057157600080fd5b80637a078b601461048f578063900b6442146104af57806395d89b41146104dc5780639bdedea5146104f157600080fd5b80631b13c2b01161019557806347ccca021161016457806347ccca02146103f0578063590f88c7146104245780635fdb01661461043957806370a082311461045957600080fd5b80631b13c2b01461037457806323b872dd14610394578063313ce567146103b457806339509351146103d057600080fd5b80630d9639ba116101d15780630d9639ba146102d65780631497608514610306578063150b7a021461031b57806318160ddd1461035f57600080fd5b806306fdde031461020e578063095ea7b314610239578063099d9c34146102695780630d154724146102b557600080fd5b3661020957005b600080fd5b34801561021a57600080fd5b50610223610752565b6040516102309190613c7b565b60405180910390f35b34801561024557600080fd5b50610259610254366004613cc3565b6107e4565b6040519015158152602001610230565b34801561027557600080fd5b5061029d7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610230565b6102c86102c3366004613d07565b6107fe565b604051908152602001610230565b3480156102e257600080fd5b506102eb610c68565b60408051938452602084019290925290820152606001610230565b610319610314366004613da2565b610c81565b005b34801561032757600080fd5b50610346610336366004613e64565b630a85bd0160e11b949350505050565b6040516001600160e01b03199091168152602001610230565b34801561036b57600080fd5b506002546102c8565b34801561038057600080fd5b5061031961038f366004613f28565b611010565b3480156103a057600080fd5b506102596103af366004613fb1565b611495565b3480156103c057600080fd5b5060405160128152602001610230565b3480156103dc57600080fd5b506102596103eb366004613cc3565b6114bb565b3480156103fc57600080fd5b5061029d7f000000000000000000000000000000000000000000000000000000000000000081565b34801561043057600080fd5b506103196114fa565b34801561044557600080fd5b506102c8610454366004613ff2565b61163f565b34801561046557600080fd5b506102c8610474366004614024565b6001600160a01b031660009081526020819052604090205490565b34801561049b57600080fd5b506102596104aa366004614041565b611739565b3480156104bb57600080fd5b506102c86104ca366004614041565b600a6020526000908152604090205481565b3480156104e857600080fd5b50610223611746565b3480156104fd57600080fd5b5061031961050c36600461405a565b611755565b34801561051d57600080fd5b5061025961052c366004613cc3565b6119f8565b34801561053d57600080fd5b5061025961054c366004613cc3565b611aad565b34801561055d57600080fd5b506102c861056c3660046140e2565b611abb565b34801561057d57600080fd5b506102c861058c36600461410e565b611b7e565b34801561059d57600080fd5b506105b16105ac366004613d07565b611c61565b60408051928352602083019190915201610230565b3480156105d257600080fd5b5061029d7f000000000000000000000000000000000000000000000000000000000000000081565b34801561060657600080fd5b506102c8610615366004613ff2565b611e84565b34801561062657600080fd5b506102c86106353660046141c0565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561066c57600080fd5b50610675611f7c565b6040516102309190614229565b34801561068e57600080fd5b506102c87f000000000000000000000000000000000000000000000000000000000000000081565b3480156106c257600080fd5b5061029d7f000000000000000000000000000000000000000000000000000000000000000081565b3480156106f657600080fd5b506102c87f000000000000000000000000000000000000000000000000000000000000000081565b34801561072a57600080fd5b5061029d7f000000000000000000000000000000000000000000000000000000000000000081565b6060600380546107619061423c565b80601f016020809104026020016040519081016040528092919081815260200182805461078d9061423c565b80156107da5780601f106107af576101008083540402835291602001916107da565b820191906000526020600020905b8154815290600101906020018083116107bd57829003601f168201915b5050505050905090565b6000336107f2818585612011565b60019150505b92915050565b600080600061080b610c68565b509092509050348061088a5760405162461bcd60e51b815260206004820152602660248201527f496e73756666696369656e7420455448207472616e7366657272656420696e7460448201527f6f20706f6f6c000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b61089386612135565b6108a86108a36020880188614270565b612245565b156108ff5760405162461bcd60e51b815260206004820152602160248201527f536f6d65204e4654732061726520616c726561647920696e2074686520706f6f6044820152601b60fa1b6064820152608401610881565b600061090e6020880188614270565b9050905060005b81811015610a5457307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316636352211e61095a60208c018c614270565b8581811061096a5761096a6142ba565b905060200201356040518263ffffffff1660e01b815260040161098f91815260200190565b602060405180830381865afa1580156109ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109d091906142d0565b6001600160a01b031614610a4c5760405162461bcd60e51b815260206004820152603060248201527f496e73756666696369656e74204c69717569646974794e465473207472616e7360448201527f66657272656420696e746f20706f6f6c000000000000000000000000000000006064820152608401610881565b600101610915565b506000610abf7f0000000000000000000000000000000000000000000000000000000000000000610a8860408b018b614270565b80806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250611b7e92505050565b90506000610acc60025490565b9050600081600003610ae357849050849750610b58565b610aee878785611abb565b905080851015610b405760405162461bcd60e51b815260206004820152601960248201527f496e73756666696369656e74204554482070726f7669646564000000000000006044820152606401610881565b86610b4b8284614303565b610b559190614330565b97505b60008811610ba85760405162461bcd60e51b815260206004820152601d60248201527f496e73756666696369656e74206c6971756964697479206d696e7465640000006044820152606401610881565b610bb2898961228a565b610bed610bbf8289614352565b610bc98589614352565b610bd660208e018e614270565b8e8060400190610be69190614270565b6001612369565b80851115610c0857610c0833610c038388614365565b6125a2565b6001600160a01b038916337f1177b556f51ffb3c56725c4d877df54024873987a67f2e97ca8fd0442acebeea83610c4260208f018f614270565b8d604051610c5394939291906143c3565b60405180910390a35050505050505092915050565b6006546007546000610c7a6008612664565b9050909192565b600080610c8c610c68565b5091509150610c9a86612135565b610caf610caa6020880188614270565b61266e565b610cfb5760405162461bcd60e51b815260206004820152601d60248201527f536f6d65204e46547320617265206e6f7420696e2074686520706f6f6c0000006044820152606401610881565b6000610d2e7f0000000000000000000000000000000000000000000000000000000000000000610a8860408a018a614270565b90507f00000000000000000000000000000000000000000000000000000000000000006000610d5f85858585611e84565b9050610d997f0000000000000000000000000000000000000000000000000000000000000000308a610d9460208e018e614270565b6126a7565b8515610e14576001600160a01b03881663dc745d6e336000610dbe60208e018e614270565b8c8c6040518763ffffffff1660e01b8152600401610de196959493929190614417565b600060405180830381600087803b158015610dfb57600080fd5b505af1158015610e0f573d6000803e3d6000fd5b505050505b80341015610e645760405162461bcd60e51b815260206004820152601c60248201527f496e73756666696369656e742045544820746f2073776170204e4654000000006044820152606401610881565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663960b26a26040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ec5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ee99190614460565b90508015610f2157612710610efe8180614303565b82610f098787614303565b610f139190614303565b610f1d9190614330565b9250505b610f4a878784610f318784614352565b610f3b9190614365565b610f45898b614365565b612759565b610f9082610f58858a614352565b610f629190614365565b610f6c8789614365565b610f7960208f018f614270565b8f8060400190610f899190614270565b6000612369565b82341115610fa657610fa633610c038534614365565b896001600160a01b0316336001600160a01b03167f56089a993cb2aaa6cc5d2574f0c5c316f0745222e70c6d18b9c0f54675117f7b858e8060200190610fec9190614270565b604051610ffb93929190614479565b60405180910390a35050505050505050505050565b60008061101b610c68565b509150915061102987612135565b6110396108a36020890189614270565b156110905760405162461bcd60e51b815260206004820152602160248201527f536f6d65204e4654732061726520616c726561647920696e2074686520706f6f6044820152601b60fa1b6064820152608401610881565b60006110c37f0000000000000000000000000000000000000000000000000000000000000000610a8860408b018b614270565b90507f000000000000000000000000000000000000000000000000000000000000000060006110f48585858561163f565b9050888110156111465760405162461bcd60e51b815260206004820152601c60248201527f496e73756666696369656e742045544820746f2073776170206f7574000000006044820152606401610881565b61115088826125a2565b606086156111bf57604051636e3a2eb760e11b81526001600160a01b038a169063dc745d6e9061118c903390869086908e908e9060040161449c565b600060405180830381600087803b1580156111a657600080fd5b505af11580156111ba573d6000803e3d6000fd5b505050505b5060006111cf60208c018c614270565b9050905060005b8181101561132157306001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316636352211e8e80602001906112279190614270565b85818110611237576112376142ba565b905060200201356040518263ffffffff1660e01b815260040161125c91815260200190565b602060405180830381865afa158015611279573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061129d91906142d0565b6001600160a01b0316146113195760405162461bcd60e51b815260206004820152602760248201527f536f6d65204e46547320617265206e6f74207472616e7366657272656420696e60448201527f746f20706f6f6c000000000000000000000000000000000000000000000000006064820152608401610881565b6001016111d6565b50506000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663960b26a26040518163ffffffff1660e01b8152600401602060405180830381865afa158015611384573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113a89190614460565b905080156113eb57612710806113be8682614365565b6113c89190614303565b826113d38787614303565b6113dd9190614303565b6113e79190614330565b9250505b506114108686836113fc8684614365565b6114069190614365565b610f45888a614352565b61144f8161141e8489614365565b6114289190614365565b6114328688614352565b61143f60208f018f614270565b8f8060400190610be69190614270565b886001600160a01b0316336001600160a01b03167f528c0a7275a45a6ccda9200d8c7caa3600efac2ee05aea4cbfab85fa84f52286848e8060200190610fec9190614270565b6000336114a38582856127bb565b6114ae858585612847565b60019150505b9392505050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091906107f290829086906114f5908790614352565b612011565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663893d20e86040518163ffffffff1660e01b8152600401602060405180830381865afa158015611558573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061157c91906142d0565b6001600160a01b0316336001600160a01b03161461159957600080fd5b60006115a3610c68565b5050905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166364df049e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611607573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061162b91906142d0565b905061163b81610c038447614365565b5050565b60008083116116905760405162461bcd60e51b815260206004820152601a60248201527f496e73756666696369656e742062656e63686d61726b204e46540000000000006044820152606401610881565b6000851180156116a05750600084115b6116e55760405162461bcd60e51b8152602060048201526016602482015275496e73756666696369656e74206c697175696469747960501b6044820152606401610881565b61271060006116f48483614365565b6116fe8887614303565b6117089190614303565b90506000826117178789614352565b6117219190614303565b905061172d8183614330565b98975050505050505050565b60006107f8600883612a44565b6060600480546107619061423c565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663893d20e86040518163ffffffff1660e01b8152600401602060405180830381865afa1580156117b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117d791906142d0565b6001600160a01b0316336001600160a01b0316146117f457600080fd5b807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03908116908516146118d75760005b818110156118d157846001600160a01b03166342842e0e3033878786818110611857576118576142ba565b6040516001600160e01b031960e088901b1681526001600160a01b03958616600482015294909316602485015250602090910201356044820152606401600060405180830381600087803b1580156118ae57600080fd5b505af11580156118c2573d6000803e3d6000fd5b5050505080600101905061182c565b506119f2565b60005b818110156119ad5761190e8484838181106118f7576118f76142ba565b905060200201356008612a4490919063ffffffff16565b6119a557846001600160a01b03166342842e0e3033878786818110611935576119356142ba565b6040516001600160e01b031960e088901b1681526001600160a01b03958616600482015294909316602485015250602090910201356044820152606401600060405180830381600087803b15801561198c57600080fd5b505af11580156119a0573d6000803e3d6000fd5b505050505b6001016118da565b50836001600160a01b03167f614b2c232e1b55f785d7ff99e6193c25a11b28370e170c35935cbc0c5541103284846040516119e99291906144d7565b60405180910390a25b50505050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490919083811015611a955760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f0000000000000000000000000000000000000000000000000000006064820152608401610881565b611aa28286868403612011565b506001949350505050565b6000336107f2818585612847565b6000808211611b0c5760405162461bcd60e51b815260206004820152601a60248201527f496e73756666696369656e742062656e63686d61726b204e46540000000000006044820152606401610881565b600084118015611b1c5750600083115b611b615760405162461bcd60e51b8152602060048201526016602482015275496e73756666696369656e74206c697175696469747960501b6044820152606401610881565b82611b6c8584614303565b611b769190614330565b949350505050565b8051600090831580611b97575083670de0b6b3a7640000145b15611bb657611bae81670de0b6b3a7640000614303565b9150506107f8565b60005b81811015611c5957600069021e19e0c9bab240000090506000611c09868481518110611be757611be76142ba565b6020026020010151670de0b6b3a7640000611c029190614303565b8390612a5c565b90506000611c1688612a71565b90506000611c2384612a71565b90506000611c318383612a5c565b9050611c3d8482612b27565b611c479089614352565b97508560010195505050505050611bb9565b505092915050565b600080600080611c6f610c68565b5091509150611c7d86612135565b611c8d610caa6020880188614270565b611cd95760405162461bcd60e51b815260206004820152601d60248201527f536f6d65204e46547320617265206e6f7420696e2074686520706f6f6c0000006044820152606401610881565b6000611ce460025490565b3060009081526020819052604081205491925082611d028584614303565b611d0c9190614330565b905082611d198684614303565b611d239190614330565b9650611d567f0000000000000000000000000000000000000000000000000000000000000000610a8860408c018c614270565b9550600087118015611d685750858110155b611dad5760405162461bcd60e51b8152602060048201526016602482015275496e73756666696369656e74206c697175696469747960501b6044820152606401610881565b611db73083612b69565b611dea7f0000000000000000000000000000000000000000000000000000000000000000308a610d9460208e018e614270565b611df488886125a2565b611e25611e018887614365565b611e0b8887614365565b611e1860208d018d614270565b610f8960408f018f614270565b6001600160a01b038816337fb6551fbb16f219d01a1c9c3bc44d339e0c39546a2584c2b04baff501fe51fd6689611e5f60208e018e614270565b87604051611e7094939291906143c3565b60405180910390a350505050509250929050565b6000808311611ed55760405162461bcd60e51b815260206004820152601a60248201527f496e73756666696369656e742062656e63686d61726b204e46540000000000006044820152606401610881565b600085118015611ee457508284115b611f295760405162461bcd60e51b8152602060048201526016602482015275496e73756666696369656e74206c697175696469747960501b6044820152606401610881565b612710600081611f398887614303565b611f439190614303565b90506000611f518584614365565b611f5b8789614365565b611f659190614303565b9050611f718183614330565b61172d906001614352565b60606000611f8a6008612664565b90508067ffffffffffffffff811115611fa557611fa5613e1d565b604051908082528060200260200182016040528015611fce578160200160208202803683370190505b50915060005b8181101561200c57611fe7600882612cb7565b838281518110611ff957611ff96142ba565b6020908102919091010152600101611fd4565b505090565b6001600160a01b0383166120735760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610881565b6001600160a01b0382166120d45760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610881565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001661216c6020830183614024565b6001600160a01b0316146121c25760405162461bcd60e51b815260206004820152601160248201527f4e46542061646472657373206572726f720000000000000000000000000000006044820152606401610881565b60006121d16020830183614270565b91505080158015906121f057506121eb6040830183614270565b905081145b61223c5760405162461bcd60e51b815260206004820152601960248201527f4c69717569646974794e4654206c656e677468206572726f72000000000000006044820152606401610881565b61163b82612cc3565b600081815b8181101561227f576122678585838181106118f7576118f76142ba565b15612277576001925050506107f8565b60010161224a565b506000949350505050565b6001600160a01b0382166122e05760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610881565b80600260008282546122f29190614352565b90915550506001600160a01b0382166000908152602081905260408120805483929061231f908490614352565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b600687905560078690558381156125245760005b8181101561251e576123b187878381811061239a5761239a6142ba565b905060200201356008612e1a90919063ffffffff16565b506000600a60008989858181106123ca576123ca6142ba565b9050602002013581526020019081526020016000205490508060001415801561240b5750858583818110612400576124006142ba565b905060200201358114155b156124cc57858583818110612422576124226142ba565b90506020020135600a60008a8a8681811061243f5761243f6142ba565b9050602002013581526020019081526020016000208190555087878381811061246a5761246a6142ba565b905060200201357fab7a77a0caacc1ccc4902dca8c9af4c66a5bdab0be52c08d9f59d7d0a67a2134828888868181106124a5576124a56142ba565b905060200201356040516124c3929190918252602082015260400190565b60405180910390a25b8585838181106124de576124de6142ba565b90506020020135600a60008a8a868181106124fb576124fb6142ba565b60209081029290920135835250810191909152604001600020555060010161237d565b50612598565b60005b818110156125965761255b878783818110612544576125446142ba565b905060200201356008612e2690919063ffffffff16565b50600a6000888884818110612572576125726142ba565b90506020020135815260200190815260200160002060009055806001019050612527565b505b5050505050505050565b604080516000808252602082019092526001600160a01b0384169083906040516125cc91906144eb565b60006040518083038185875af1925050503d8060008114612609576040519150601f19603f3d011682016040523d82523d6000602084013e61260e565b606091505b505090508061265f5760405162461bcd60e51b815260206004820152601360248201527f5472616e7366657220455448206661696c6564000000000000000000000000006044820152606401610881565b505050565b60006107f8825490565b600081815b81811015611aa2576126908585838181106118f7576118f76142ba565b61269f576000925050506107f8565b600101612673565b8060005b8181101561275057866001600160a01b03166342842e0e87878787868181106126d6576126d66142ba565b6040516001600160e01b031960e088901b1681526001600160a01b03958616600482015294909316602485015250602090910201356044820152606401600060405180830381600087803b15801561272d57600080fd5b505af1158015612741573d6000803e3d6000fd5b505050508060010190506126ab565b50505050505050565b6127638385614303565b61276d8284614303565b10156119f25760405162461bcd60e51b815260206004820152600c60248201527f496e76616c6964617465204b00000000000000000000000000000000000000006044820152606401610881565b6001600160a01b0383811660009081526001602090815260408083209386168352929052205460001981146119f2578181101561283a5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610881565b6119f28484848403612011565b6001600160a01b0383166128c35760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610881565b6001600160a01b0382166129255760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610881565b6001600160a01b038316600090815260208190526040902054818110156129b45760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401610881565b6001600160a01b038085166000908152602081905260408082208585039055918516815290812080548492906129eb908490614352565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612a3791815260200190565b60405180910390a36119f2565b600081815260018301602052604081205415156114b4565b60006114b483670de0b6b3a764000084612e32565b6000670de0b6b3a7640000821015612a9f57604051633621413760e21b815260048101839052602401610881565b6000612ab4670de0b6b3a76400008404612eff565b670de0b6b3a764000081029250905082811c670de0b6b3a763ffff198101612add575050919050565b6706f05b59d3b200005b8015612b1f57670de0b6b3a7640000828002049150671bc16d674ec800008210612b17579283019260019190911c905b60011c612ae7565b505050919050565b600082600003612b4f578115612b3e576000612b48565b670de0b6b3a76400005b90506107f8565b6114b4612b64612b5e85612a71565b84612ff5565b613001565b6001600160a01b038216612bc95760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610881565b6001600160a01b03821660009081526020819052604090205481811015612c3d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610881565b6001600160a01b0383166000908152602081905260408120838303905560028054849290612c6c908490614365565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050565b60006114b48383613047565b6000612cd26020830183614024565b612cdf6020840184614270565b612cec6040860186614270565b604051602001612d00959493929190614507565b60408051601f19818403018152919052805160209091012090506000612d3f82612d3060c0860160a0870161453d565b85606001358660800135613071565b604051632f9c696d60e11b81526001600160a01b0380831660048301529192507f000000000000000000000000000000000000000000000000000000000000000090911690635f38d2da90602401602060405180830381865afa158015612daa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612dce9190614560565b61265f5760405162461bcd60e51b815260206004820152601960248201527f5665726966696564204e465420726172697479206572726f72000000000000006044820152606401610881565b60006114b48383613099565b60006114b483836130e8565b6000808060001985870985870292508281108382030391505080600003612e6c57838281612e6257612e6261431a565b04925050506114b4565b838110612e9657604051631dcf306360e21b81526004810182905260248101859052604401610881565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b60007001000000000000000000000000000000008210612f2c57608091821c91612f299082614352565b90505b680100000000000000008210612f4f57604091821c91612f4c9082614352565b90505b6401000000008210612f6e57602091821c91612f6b9082614352565b90505b620100008210612f8b57601091821c91612f889082614352565b90505b6101008210612fa757600891821c91612fa49082614352565b90505b60108210612fc257600491821c91612fbf9082614352565b90505b60048210612fdd57600291821c91612fda9082614352565b90505b60028210612ff0576107f8600182614352565b919050565b60006114b483836131db565b6000680a688906bd8b000000821061302f57604051634a4f26f160e01b815260048101839052602401610881565b670de0b6b3a7640000604083901b046114b4816132a1565b600082600001828154811061305e5761305e6142ba565b9060005260206000200154905092915050565b6000806000613082878787876139b1565b9150915061308f81613a9e565b5095945050505050565b60008181526001830160205260408120546130e0575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556107f8565b5060006107f8565b600081815260018301602052604081205480156131d157600061310c600183614365565b855490915060009061312090600190614365565b9050818114613185576000866000018281548110613140576131406142ba565b9060005260206000200154905080876000018481548110613163576131636142ba565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061319657613196614582565b6001900381819060005260206000200160009055905585600101600086815260200190815260200160002060009055600193505050506107f8565b60009150506107f8565b60008080600019848609848602925082811083820303915050670de0b6b3a7640000811061321f5760405163698d9a0160e11b815260048101829052602401610881565b600080670de0b6b3a764000086880991506706f05b59d3b1ffff821190508260000361325d5780670de0b6b3a76400008504019450505050506107f8565b620400008285030493909111909103600160ee1b02919091177faccb18165bd6fe31ae1cf318dc5b51eee0e1ba569b88cd74c1773b91fac106690201905092915050565b778000000000000000000000000000000000000000000000006780000000000000008216156132d95768016a09e667f3bcc9090260401c5b6740000000000000008216156132f8576801306fe0a31b7152df0260401c5b672000000000000000821615613317576801172b83c7d517adce0260401c5b6710000000000000008216156133365768010b5586cf9890f62a0260401c5b670800000000000000821615613355576801059b0d31585743ae0260401c5b67040000000000000082161561337457680102c9a3e778060ee70260401c5b6702000000000000008216156133935768010163da9fb33356d80260401c5b6701000000000000008216156133b257680100b1afa5abcbed610260401c5b66800000000000008216156133d05768010058c86da1c09ea20260401c5b66400000000000008216156133ee576801002c605e2e8cec500260401c5b662000000000000082161561340c57680100162f3904051fa10260401c5b661000000000000082161561342a576801000b175effdc76ba0260401c5b660800000000000082161561344857680100058ba01fb9f96d0260401c5b66040000000000008216156134665768010002c5cc37da94920260401c5b6602000000000000821615613484576801000162e525ee05470260401c5b66010000000000008216156134a25768010000b17255775c040260401c5b658000000000008216156134bf576801000058b91b5bc9ae0260401c5b654000000000008216156134dc57680100002c5c89d5ec6d0260401c5b652000000000008216156134f95768010000162e43f4f8310260401c5b6510000000000082161561351657680100000b1721bcfc9a0260401c5b650800000000008216156135335768010000058b90cf1e6e0260401c5b65040000000000821615613550576801000002c5c863b73f0260401c5b6502000000000082161561356d57680100000162e430e5a20260401c5b6501000000000082161561358a576801000000b1721835510260401c5b6480000000008216156135a657680100000058b90c0b490260401c5b6440000000008216156135c25768010000002c5c8601cc0260401c5b6420000000008216156135de576801000000162e42fff00260401c5b6410000000008216156135fa5768010000000b17217fbb0260401c5b640800000000821615613616576801000000058b90bfce0260401c5b64040000000082161561363257680100000002c5c85fe30260401c5b64020000000082161561364e5768010000000162e42ff10260401c5b64010000000082161561366a57680100000000b17217f80260401c5b63800000008216156136855768010000000058b90bfc0260401c5b63400000008216156136a0576801000000002c5c85fe0260401c5b63200000008216156136bb57680100000000162e42ff0260401c5b63100000008216156136d6576801000000000b17217f0260401c5b63080000008216156136f157680100000000058b90c00260401c5b630400000082161561370c5768010000000002c5c8600260401c5b6302000000821615613727576801000000000162e4300260401c5b63010000008216156137425768010000000000b172180260401c5b6280000082161561375c576801000000000058b90c0260401c5b6240000082161561377657680100000000002c5c860260401c5b622000008216156137905768010000000000162e430260401c5b621000008216156137aa57680100000000000b17210260401c5b620800008216156137c45768010000000000058b910260401c5b620400008216156137de576801000000000002c5c80260401c5b620200008216156137f857680100000000000162e40260401c5b62010000821615613812576801000000000000b1720260401c5b61800082161561382b57680100000000000058b90260401c5b6140008216156138445768010000000000002c5d0260401c5b61200082161561385d576801000000000000162e0260401c5b6110008216156138765768010000000000000b170260401c5b61080082161561388f576801000000000000058c0260401c5b6104008216156138a857680100000000000002c60260401c5b6102008216156138c157680100000000000001630260401c5b6101008216156138da57680100000000000000b10260401c5b60808216156138f257680100000000000000590260401c5b604082161561390a576801000000000000002c0260401c5b602082161561392257680100000000000000160260401c5b601082161561393a576801000000000000000b0260401c5b600882161561395257680100000000000000060260401c5b600482161561396a57680100000000000000030260401c5b600282161561398257680100000000000000010260401c5b600182161561399a57680100000000000000010260401c5b670de0b6b3a76400000260409190911c60bf031c90565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156139e85750600090506003613a95565b8460ff16601b14158015613a0057508460ff16601c14155b15613a115750600090506004613a95565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015613a65573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116613a8e57600060019250925050613a95565b9150600090505b94509492505050565b6000816004811115613ab257613ab2614598565b03613aba5750565b6001816004811115613ace57613ace614598565b03613b1b5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610881565b6002816004811115613b2f57613b2f614598565b03613b7c5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610881565b6003816004811115613b9057613b90614598565b03613be85760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610881565b6004816004811115613bfc57613bfc614598565b03613c545760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610881565b50565b60005b83811015613c72578181015183820152602001613c5a565b50506000910152565b6020815260008251806020840152613c9a816040850160208701613c57565b601f01601f19169190910160400192915050565b6001600160a01b0381168114613c5457600080fd5b60008060408385031215613cd657600080fd5b8235613ce181613cae565b946020939093013593505050565b600060c08284031215613d0157600080fd5b50919050565b60008060408385031215613d1a57600080fd5b823567ffffffffffffffff811115613d3157600080fd5b613d3d85828601613cef565b9250506020830135613d4e81613cae565b809150509250929050565b60008083601f840112613d6b57600080fd5b50813567ffffffffffffffff811115613d8357600080fd5b602083019150836020828501011115613d9b57600080fd5b9250929050565b60008060008060608587031215613db857600080fd5b843567ffffffffffffffff80821115613dd057600080fd5b613ddc88838901613cef565b955060208701359150613dee82613cae565b90935060408601359080821115613e0457600080fd5b50613e1187828801613d59565b95989497509550505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715613e5c57613e5c613e1d565b604052919050565b60008060008060808587031215613e7a57600080fd5b8435613e8581613cae565b9350602085810135613e9681613cae565b935060408601359250606086013567ffffffffffffffff80821115613eba57600080fd5b818801915088601f830112613ece57600080fd5b813581811115613ee057613ee0613e1d565b613ef2601f8201601f19168501613e33565b91508082528984828501011115613f0857600080fd5b808484018584013760008482840101525080935050505092959194509250565b600080600080600060808688031215613f4057600080fd5b853567ffffffffffffffff80821115613f5857600080fd5b613f6489838a01613cef565b96506020880135955060408801359150613f7d82613cae565b90935060608701359080821115613f9357600080fd5b50613fa088828901613d59565b969995985093965092949392505050565b600080600060608486031215613fc657600080fd5b8335613fd181613cae565b92506020840135613fe181613cae565b929592945050506040919091013590565b6000806000806080858703121561400857600080fd5b5050823594602084013594506040840135936060013592509050565b60006020828403121561403657600080fd5b81356114b481613cae565b60006020828403121561405357600080fd5b5035919050565b60008060006040848603121561406f57600080fd5b833561407a81613cae565b9250602084013567ffffffffffffffff8082111561409757600080fd5b818601915086601f8301126140ab57600080fd5b8135818111156140ba57600080fd5b8760208260051b85010111156140cf57600080fd5b6020830194508093505050509250925092565b6000806000606084860312156140f757600080fd5b505081359360208301359350604090920135919050565b6000806040838503121561412157600080fd5b8235915060208084013567ffffffffffffffff8082111561414157600080fd5b818601915086601f83011261415557600080fd5b81358181111561416757614167613e1d565b8060051b9150614178848301613e33565b818152918301840191848101908984111561419257600080fd5b938501935b838510156141b057843582529385019390850190614197565b8096505050505050509250929050565b600080604083850312156141d357600080fd5b82356141de81613cae565b91506020830135613d4e81613cae565b600081518084526020808501945080840160005b8381101561421e57815187529582019590820190600101614202565b509495945050505050565b6020815260006114b460208301846141ee565b600181811c9082168061425057607f821691505b602082108103613d0157634e487b7160e01b600052602260045260246000fd5b6000808335601e1984360301811261428757600080fd5b83018035915067ffffffffffffffff8211156142a257600080fd5b6020019150600581901b3603821315613d9b57600080fd5b634e487b7160e01b600052603260045260246000fd5b6000602082840312156142e257600080fd5b81516114b481613cae565b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176107f8576107f86142ed565b634e487b7160e01b600052601260045260246000fd5b60008261434d57634e487b7160e01b600052601260045260246000fd5b500490565b808201808211156107f8576107f86142ed565b818103818111156107f8576107f86142ed565b81835260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8311156143aa57600080fd5b8260051b80836020870137939093016020019392505050565b8481526060602082015260006143dd606083018587614378565b905082604083015295945050505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6001600160a01b0387168152856020820152608060408201526000614440608083018688614378565b82810360608401526144538185876143ee565b9998505050505050505050565b60006020828403121561447257600080fd5b5051919050565b838152604060208201526000614493604083018486614378565b95945050505050565b6001600160a01b03861681528460208201526080604082015260006144c460808301866141ee565b828103606084015261172d8185876143ee565b602081526000611b76602083018486614378565b600082516144fd818460208701613c57565b9190910192915050565b6001600160a01b038616815260606020820152600061452a606083018688614378565b828103604084015261172d818587614378565b60006020828403121561454f57600080fd5b813560ff811681146114b457600080fd5b60006020828403121561457257600080fd5b815180151581146114b457600080fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052602160045260246000fdfea2646970667358221220da9c4fb448c81effb26a67d571567ef50248462b55bb2601b1d064ef27daa1b264736f6c63430008110033