0x60806040523480156200001157600080fd5b506200001c62000022565b620000e3565b600054610100900460ff16156200008f5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811614620000e1576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b615feb80620000f36000396000f3fe6080604052600436106104bf5760003560e01c80638ba4cc3c11610276578063baf3292d1161014f578063e268e4d3116100c1578063f0f4426011610085578063f0f4426014610f7c578063f235364114610f9c578063f2fde38b14610fbc578063f5ecbdbc14610fdc578063fa25f9b614610ffc578063fdfc7aae1461102957600080fd5b8063e268e4d314610edc578063e3e1a41814610efc578063e985e9c514610f1c578063ea82d76114610f3c578063eb8d72b714610f5c57600080fd5b8063cbed8b9c11610113578063cbed8b9c14610e3f578063d12473a514610e5f578063d1deba1f14610e7f578063d2cab05614610e92578063d5abeb0114610ea5578063df2a5b3b14610ebc57600080fd5b8063baf3292d14610d9c578063bd32fb6614610dbc578063c23dc68f14610ddc578063c446183414610e09578063c87b56dd14610e1f57600080fd5b80639f38369a116101e8578063ab3ffb93116101ac578063ab3ffb9314610cec578063aeca06ab14610cff578063af3fb21c14610d21578063b353aaa714610d49578063b7c0b8e814610d69578063b88d4fde14610d8957600080fd5b80639f38369a14610c62578063a035b1fe14610c82578063a0712d6814610c99578063a22cb46514610cac578063a6c3d16514610ccc57600080fd5b806391b7f5ed1161023a57806391b7f5ed14610b9f578063950c8a7414610bbf57806395d89b4114610bdf57806399a2557a14610bf45780639ea5d6b114610c145780639ec00c9514610c3457600080fd5b80638ba4cc3c14610af45780638cc54e7f14610b145780638cfd8f5c14610b295780638da5cb5b14610b615780638ffa1f2a14610b7f57600080fd5b806342842e0e116103a85780636352211e1161031a578063715018a6116102de578063715018a614610a3b5780637533d78814610a505780638050649414610a705780638462151c14610a905780638622a68914610abd5780638a9c2d6514610ad457600080fd5b80636352211e146109a657806366ad5c8a146109c65780636c0360eb146109e65780636f8b44b0146109fb57806370a0823114610a1b57600080fd5b8063519056361161036c57806351905636146108bf57806353f8bb9a146108d257806355f804b3146108e95780635b8c41e6146109095780635bbb21771461095857806361d027b31461098557600080fd5b806342842e0e1461083257806342d65a8d14610845578063453c231014610865578063482881901461087c5780634ac3f4ff1461089257600080fd5b806310ddb1371161044157806323b872dd1161040557806323b872dd146107495780632a205e3d1461075c5780632a55205a146107915780633ccfd60b146107d05780633d8b38f6146107e55780633f1f4fa41461080557600080fd5b806310ddb1371461062857806311c67efc14610648578063150b7a021461066a57806318160ddd146106a357806322a3ecf9146106c657600080fd5b8063081812fc11610488578063081812fc1461057d578063095ea7b3146105b55780630b4cad4c146105c85780630df37483146105e85780630f8677511461060857600080fd5b80621d3567146104c457806301ffc9a7146104e657806304634d8d1461051b57806306fdde031461053b57806307e0db171461055d575b600080fd5b3480156104d057600080fd5b506104e46104df366004614b77565b61103e565b005b3480156104f257600080fd5b50610506610501366004614c20565b61125a565b60405190151581526020015b60405180910390f35b34801561052757600080fd5b506104e4610536366004614c5d565b611294565b34801561054757600080fd5b506105506112aa565b6040516105129190614cf2565b34801561056957600080fd5b506104e4610578366004614d05565b611345565b34801561058957600080fd5b5061059d610598366004614d20565b6113b2565b6040516001600160a01b039091168152602001610512565b6104e46105c3366004614d39565b6113ff565b3480156105d457600080fd5b506104e46105e3366004614d20565b611431565b3480156105f457600080fd5b506104e4610603366004614d65565b6114a4565b34801561061457600080fd5b506104e4610623366004614d81565b6114c3565b34801561063457600080fd5b506104e4610643366004614d05565b6114d8565b34801561065457600080fd5b506101625461050690600160a01b900460ff1681565b34801561067657600080fd5b5061068a610685366004614e66565b611514565b6040516001600160e01b03199091168152602001610512565b3480156106af57600080fd5b506106b8611525565b604051908152602001610512565b3480156106d257600080fd5b5061071a6106e1366004614d20565b60fe6020526000908152604090208054600182015460029092015461ffff821692620100009092046001600160a01b0316919060ff1684565b6040805161ffff90951685526001600160a01b0390931660208501529183015215156060820152608001610512565b6104e4610757366004614ed1565b611545565b34801561076857600080fd5b5061077c610777366004614f22565b611589565b60408051928352602083019190915201610512565b34801561079d57600080fd5b506107b16107ac366004614d81565b6115af565b604080516001600160a01b039093168352602083019190915201610512565b3480156107dc57600080fd5b506104e461165f565b3480156107f157600080fd5b50610506610800366004614fb0565b6116fb565b34801561081157600080fd5b506106b8610820366004614d05565b60686020526000908152604090205481565b6104e4610840366004614ed1565b6117c8565b34801561085157600080fd5b506104e4610860366004614fb0565b611806565b34801561087157600080fd5b506106b86101645481565b34801561088857600080fd5b506106b860fb5481565b34801561089e57600080fd5b506106b86108ad366004614d05565b60fc6020526000908152604090205481565b6104e46108cd366004615002565b611870565b3480156108de57600080fd5b506106b86101665481565b3480156108f557600080fd5b506104e46109043660046150bb565b611887565b34801561091557600080fd5b506106b86109243660046150ef565b6097602090815260009384526040808520845180860184018051928152908401958401959095209452929052825290205481565b34801561096457600080fd5b50610978610973366004615190565b61189c565b604051610512919061520d565b34801561099157600080fd5b506101625461059d906001600160a01b031681565b3480156109b257600080fd5b5061059d6109c1366004614d20565b611967565b3480156109d257600080fd5b506104e46109e1366004614b77565b611972565b3480156109f257600080fd5b50610550611a4e565b348015610a0757600080fd5b506104e4610a16366004614d20565b611add565b348015610a2757600080fd5b506106b8610a3636600461524f565b611aeb565b348015610a4757600080fd5b506104e4611b53565b348015610a5c57600080fd5b50610550610a6b366004614d05565b611b67565b348015610a7c57600080fd5b506104e4610a8b36600461526c565b611b80565b348015610a9c57600080fd5b50610ab0610aab36600461524f565b611ba7565b60405161051291906152c3565b348015610ac957600080fd5b506106b86101675481565b348015610ae057600080fd5b506104e4610aef3660046152d6565b611caf565b348015610b0057600080fd5b506104e4610b0f366004614d39565b611d12565b348015610b2057600080fd5b50610550611d24565b348015610b3557600080fd5b506106b8610b44366004615341565b606760209081526000928352604080842090915290825290205481565b348015610b6d57600080fd5b506033546001600160a01b031661059d565b348015610b8b57600080fd5b506104e4610b9a3660046150bb565b611d32565b348015610bab57600080fd5b506104e4610bba366004614d20565b611f7c565b348015610bcb57600080fd5b5060695461059d906001600160a01b031681565b348015610beb57600080fd5b50610550611f8a565b348015610c0057600080fd5b50610ab0610c0f366004615374565b611fa2565b348015610c2057600080fd5b506104e4610c2f366004614d65565b612126565b348015610c4057600080fd5b506106b8610c4f36600461524f565b61016a6020526000908152604090205481565b348015610c6e57600080fd5b50610550610c7d366004614d05565b6121a9565b348015610c8e57600080fd5b506106b86101655481565b6104e4610ca7366004614d20565b6122b8565b348015610cb857600080fd5b506104e4610cc73660046153a9565b6123b7565b348015610cd857600080fd5b506104e4610ce7366004614fb0565b6123e4565b6104e4610cfa366004615462565b61246d565b348015610d0b57600080fd5b506101625461050690600160a81b900460ff1681565b348015610d2d57600080fd5b50610d36600181565b60405161ffff9091168152602001610512565b348015610d5557600080fd5b5060655461059d906001600160a01b031681565b348015610d7557600080fd5b506104e4610d8436600461526c565b61247c565b6104e4610d97366004614e66565b612498565b348015610da857600080fd5b506104e4610db736600461524f565b6124d7565b348015610dc857600080fd5b506104e4610dd7366004614d20565b612533565b348015610de857600080fd5b50610dfc610df7366004614d20565b612541565b6040516105129190615517565b348015610e1557600080fd5b506106b861271081565b348015610e2b57600080fd5b50610550610e3a366004614d20565b6125ce565b348015610e4b57600080fd5b506104e4610e5a366004615525565b612680565b348015610e6b57600080fd5b506104e4610e7a366004614d65565b6126f9565b6104e4610e8d366004614b77565b61277d565b6104e4610ea0366004615593565b612993565b348015610eb157600080fd5b506106b86101615481565b348015610ec857600080fd5b506104e4610ed73660046155d1565b612b11565b348015610ee857600080fd5b506104e4610ef7366004614d20565b612bc3565b348015610f0857600080fd5b506104e4610f1736600461560d565b612bd1565b348015610f2857600080fd5b50610506610f373660046156e4565b612d69565b348015610f4857600080fd5b506104e4610f5736600461526c565b612da6565b348015610f6857600080fd5b506104e4610f77366004614fb0565b612dcd565b348015610f8857600080fd5b506104e4610f9736600461524f565b612e27565b348015610fa857600080fd5b5061077c610fb7366004615712565b612e52565b348015610fc857600080fd5b506104e4610fd736600461524f565b612f00565b348015610fe857600080fd5b50610550610ff736600461578b565b612f79565b34801561100857600080fd5b506106b8611017366004614d05565b60fd6020526000908152604090205481565b34801561103557600080fd5b5061050661300c565b6065546001600160a01b0316336001600160a01b0316146110a65760405162461bcd60e51b815260206004820152601e60248201527f4c7a4170703a20696e76616c696420656e64706f696e742063616c6c6572000060448201526064015b60405180910390fd5b61ffff8616600090815260666020526040812080546110c4906157d8565b80601f01602080910402602001604051908101604052809291908181526020018280546110f0906157d8565b801561113d5780601f106111125761010080835404028352916020019161113d565b820191906000526020600020905b81548152906001019060200180831161112057829003601f168201915b50505050509050805186869050148015611158575060008151115b80156111805750805160208201206040516111769088908890615812565b6040518091039020145b6111db5760405162461bcd60e51b815260206004820152602660248201527f4c7a4170703a20696e76616c696420736f757263652073656e64696e6720636f6044820152651b9d1c9858dd60d21b606482015260840161109d565b6112518787878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8a018190048102820181019092528881528a93509150889088908190840183828082843760009201919091525061302992505050565b50505050505050565b60006001600160e01b031982166322bac5d960e01b148061127f575061127f826130a2565b8061128e575061128e826130f0565b92915050565b61129c613115565b6112a6828261316f565b5050565b60606112b461326d565b60020180546112c2906157d8565b80601f01602080910402602001604051908101604052809291908181526020018280546112ee906157d8565b801561133b5780601f106113105761010080835404028352916020019161133b565b820191906000526020600020905b81548152906001019060200180831161131e57829003601f168201915b5050505050905090565b61134d613115565b6065546040516307e0db1760e01b815261ffff831660048201526001600160a01b03909116906307e0db17906024015b600060405180830381600087803b15801561139757600080fd5b505af11580156113ab573d6000803e3d6000fd5b5050505050565b60006113bd82613291565b6113da576040516333d1c03960e21b815260040160405180910390fd5b6113e261326d565b60009283526006016020525060409020546001600160a01b031690565b81611409816132da565b611422576101605460ff161561142257611422816132fc565b61142c8383613340565b505050565b611439613115565b6000811161149f5760405162461bcd60e51b815260206004820152602d60248201527f4f4e46543732313a206d696e476173546f5472616e73666572416e6453746f7260448201526c065206d757374206265203e203609c1b606482015260840161109d565b60fb55565b6114ac613115565b61ffff909116600090815260686020526040902055565b6114cb613115565b6101669190915561016755565b6114e0613115565b6065546040516310ddb13760e01b815261ffff831660048201526001600160a01b03909116906310ddb1379060240161137d565b630a85bd0160e11b5b949350505050565b6000600161153161326d565b6001015461153d61326d565b540303919050565b826001600160a01b03811633146115785761155f336132da565b611578576101605460ff161561157857611578336132fc565b61158384848461334c565b50505050565b6000806115a1878761159a8861353f565b8787612e52565b915091509550959350505050565b600082815261012e602090815260408083208151808301909252546001600160a01b038116808352600160a01b9091046001600160601b031692820192909252829161162657506040805180820190915261012d546001600160a01b0381168252600160a01b90046001600160601b031660208201525b602081015160009061271090611645906001600160601b031687615838565b61164f919061584f565b91519350909150505b9250929050565b611667613115565b6101625460405147916000916001600160a01b039091169083908381818185875af1925050503d80600081146116b9576040519150601f19603f3d011682016040523d82523d6000602084013e6116be565b606091505b50509050806112a65760405162461bcd60e51b815260206004820152600960248201526821776974686472617760b81b604482015260640161109d565b61ffff83166000908152606660205260408120805482919061171c906157d8565b80601f0160208091040260200160405190810160405280929190818152602001828054611748906157d8565b80156117955780601f1061176a57610100808354040283529160200191611795565b820191906000526020600020905b81548152906001019060200180831161177857829003601f168201915b5050505050905083836040516117ac929190615812565b60405180910390208180519060200120149150505b9392505050565b826001600160a01b03811633146117fb576117e2336132da565b6117fb576101605460ff16156117fb576117fb336132fc565b61158384848461358a565b61180e613115565b6065546040516342d65a8d60e01b81526001600160a01b03909116906342d65a8d906118429086908690869060040161589a565b600060405180830381600087803b15801561185c57600080fd5b505af1158015611251573d6000803e3d6000fd5b61125187878761187f8861353f565b8787876135a5565b61188f613115565b61015f6112a68282615900565b6060816000816001600160401b038111156118b9576118b9614da3565b60405190808252806020026020018201604052801561190b57816020015b6040805160808101825260008082526020808301829052928201819052606082015282526000199092019101816118d75790505b50905060005b82811461195e5761193986868381811061192d5761192d6159bf565b90506020020135612541565b82828151811061194b5761194b6159bf565b6020908102919091010152600101611911565b50949350505050565b600061128e82613782565b3330146119d05760405162461bcd60e51b815260206004820152602660248201527f4e6f6e626c6f636b696e674c7a4170703a2063616c6c6572206d7573742062656044820152650204c7a4170760d41b606482015260840161109d565b611a468686868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f89018190048102820181019092528781528993509150879087908190840183828082843760009201919091525061382f92505050565b505050505050565b61015f8054611a5c906157d8565b80601f0160208091040260200160405190810160405280929190818152602001828054611a88906157d8565b8015611ad55780601f10611aaa57610100808354040283529160200191611ad5565b820191906000526020600020905b815481529060010190602001808311611ab857829003601f168201915b505050505081565b611ae5613115565b61016155565b60006001600160a01b038216611b14576040516323d3ad8160e21b815260040160405180910390fd5b6001600160401b03611b2461326d565b6005016000846001600160a01b03166001600160a01b0316815260200190815260200160002054169050919050565b611b5b613115565b611b656000613986565b565b60666020526000908152604090208054611a5c906157d8565b611b88613115565b6101628054911515600160a01b0260ff60a01b19909216919091179055565b60606000806000611bb785611aeb565b90506000816001600160401b03811115611bd357611bd3614da3565b604051908082528060200260200182016040528015611bfc578160200160208202803683370190505b509050611c2960408051608081018252600080825260208201819052918101829052606081019190915290565b60015b838614611ca357611c3c816139d8565b91508160400151611c9b5781516001600160a01b031615611c5c57815194505b876001600160a01b0316856001600160a01b031603611c9b5780838780600101985081518110611c8e57611c8e6159bf565b6020026020010181815250505b600101611c2c565b50909695505050505050565b611cb7613115565b60005b838110156113ab57611d0a858583818110611cd757611cd76159bf565b9050602002016020810190611cec919061524f565b848484818110611cfe57611cfe6159bf565b90506020020135613a1f565b600101611cba565b611d1a613115565b6112a68282613a1f565b6101638054611a5c906157d8565b8051602080830191909120600081815260fe90925260409091206002015460ff16611d9f5760405162461bcd60e51b815260206004820152601a60248201527f4f4e46543732313a206e6f20637265646974732073746f726564000000000000604482015260640161109d565b600082806020019051810190611db59190615a1a565b600084815260fe602052604081208054600190910154929450909250611df19161ffff8216916201000090046001600160a01b03169085613b5a565b600084815260fe60205260409020600101549091508111611e6f5760405162461bcd60e51b815260206004820152603260248201527f4f4e46543732313a206e6f7420656e6f7567682067617320746f2070726f636560448201527139b99031b932b234ba103a3930b739b332b960711b606482015260840161109d565b81518103611ee657600083815260fe602052604080822080546001600160b01b031916815560018101929092556002909101805460ff19169055517fd7be02b8dd0d27bd0517a9cb4d7469ce27df4313821ae5ec1ff69acc594ba23390611ed99085815260200190565b60405180910390a1611583565b60408051608081018252600085815260fe6020818152848320805461ffff8082168752620100008083046001600160a01b03908116868a019081529989019a8b52600160608a018181529d9098529590945295519651969095166001600160b01b031990951694909417949091160292909217815591519082015591516002909201805460ff1916921515929092179091555050565b611f84613115565b61016555565b6060611f9461326d565b60030180546112c2906157d8565b6060818310611fc457604051631960ccad60e11b815260040160405180910390fd5b600080611fcf613ba6565b90506001851015611fdf57600194505b80841115611feb578093505b6000611ff687611aeb565b905084861015612015578585038181101561200f578091505b50612019565b5060005b6000816001600160401b0381111561203357612033614da3565b60405190808252806020026020018201604052801561205c578160200160208202803683370190505b509050816000036120725793506117c192505050565b600061207d88612541565b90506000816040015161208e575080515b885b8881141580156120a05750848714155b15612115576120ae816139d8565b9250826040015161210d5782516001600160a01b0316156120ce57825191505b8a6001600160a01b0316826001600160a01b03160361210d5780848880600101995081518110612100576121006159bf565b6020026020010181815250505b600101612090565b505050928352509095945050505050565b61212e613115565b600081116121925760405162461bcd60e51b815260206004820152602b60248201527f4f4e46543732313a20647374436861696e4964546f42617463684c696d69742060448201526a06d757374206265203e20360ac1b606482015260840161109d565b61ffff909116600090815260fc6020526040902055565b61ffff81166000908152606660205260408120805460609291906121cc906157d8565b80601f01602080910402602001604051908101604052809291908181526020018280546121f8906157d8565b80156122455780601f1061221a57610100808354040283529160200191612245565b820191906000526020600020905b81548152906001019060200180831161222857829003601f168201915b50505050509050805160000361229d5760405162461bcd60e51b815260206004820152601d60248201527f4c7a4170703a206e6f20747275737465642070617468207265636f7264000000604482015260640161109d565b6117c16000601483516122b09190615ad4565b839190613bb6565b6122c061300c565b6122dd5760405163baf13b3f60e01b815260040160405180910390fd5b6101655481906122ed8183615838565b341461230c5760405163356680b760e01b815260040160405180910390fd5b82610161548161231a611525565b6123249190615ae7565b111561234357604051631a851be960e11b815260040160405180910390fd5b6101645433600090815261016a6020526040902054612363908390615ae7565b11156123825760405163d330f98560e01b815260040160405180910390fd5b61016254600160a01b900460ff166123ad57604051637002ac7160e11b815260040160405180910390fd5b6115833385613cc2565b816123c1816132da565b6123da576101605460ff16156123da576123da816132fc565b61142c8383613cfb565b6123ec613115565b81813060405160200161240193929190615afa565b60408051601f1981840301815291815261ffff851660009081526066602052209061242c9082615900565b507f8c0400cfe2d1199b1a725c78960bcc2a344d869b80590d0f2bd005db15a572ce8383836040516124609392919061589a565b60405180910390a1505050565b611251878787878787876135a5565b612484613115565b610160805460ff1916911515919091179055565b836001600160a01b03811633146124cb576124b2336132da565b6124cb576101605460ff16156124cb576124cb336132fc565b6113ab85858585613d78565b6124df613115565b606980546001600160a01b0319166001600160a01b0383169081179091556040519081527f5db758e995a17ec1ad84bdef7e8c3293a0bd6179bcce400dff5d4c3d87db726b9060200160405180910390a150565b61253b613115565b61016955565b604080516080810182526000808252602082018190529181018290526060810191909152604080516080810182526000808252602082018190529181018290526060810191909152600183108061259f575061259b613ba6565b8310155b156125aa5792915050565b6125b3836139d8565b90508060400151156125c55792915050565b6117c183613dbc565b61016254606090600160a81b900460ff16156126775761016380546125f2906157d8565b80601f016020809104026020016040519081016040528092919081815260200182805461261e906157d8565b801561266b5780601f106126405761010080835404028352916020019161266b565b820191906000526020600020905b81548152906001019060200180831161264e57829003601f168201915b50505050509050919050565b61128e82613df1565b612688613115565b6065546040516332fb62e760e21b81526001600160a01b039091169063cbed8b9c906126c09088908890889088908890600401615b20565b600060405180830381600087803b1580156126da57600080fd5b505af11580156126ee573d6000803e3d6000fd5b505050505050505050565b612701613115565b600081116127665760405162461bcd60e51b815260206004820152602c60248201527f4f4e46543732313a20647374436861696e4964546f5472616e7366657247617360448201526b0206d757374206265203e20360a41b606482015260840161109d565b61ffff909116600090815260fd6020526040902055565b61ffff861660009081526097602052604080822090516127a09088908890615812565b90815260408051602092819003830190206001600160401b038716600090815292529020549050806128205760405162461bcd60e51b815260206004820152602360248201527f4e6f6e626c6f636b696e674c7a4170703a206e6f2073746f726564206d65737360448201526261676560e81b606482015260840161109d565b808383604051612831929190615812565b6040518091039020146128905760405162461bcd60e51b815260206004820152602160248201527f4e6f6e626c6f636b696e674c7a4170703a20696e76616c6964207061796c6f616044820152601960fa1b606482015260840161109d565b61ffff871660009081526097602052604080822090516128b39089908990615812565b90815260408051602092819003830181206001600160401b038916600090815290845282902093909355601f8801829004820283018201905286825261294b918991899089908190840183828082843760009201919091525050604080516020601f8a018190048102820181019092528881528a93509150889088908190840183828082843760009201919091525061382f92505050565b7fc264d91f3adc5588250e1551f547752ca0cfa8f6b530d243b9f9f4cab10ea8e58787878785604051612982959493929190615b59565b60405180910390a150505050505050565b61299b61300c565b6129b85760405163baf13b3f60e01b815260040160405180910390fd5b6101655483906129c88183615838565b34146129e75760405163356680b760e01b815260040160405180910390fd5b610169546040516bffffffffffffffffffffffff193360601b16602082015285908590600090603401604051602081830303815290604052805190602001209050612a68838380806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250889250859150613e909050565b612a85576040516309bde33960e01b815260040160405180910390fd5b886101615481612a93611525565b612a9d9190615ae7565b1115612abc57604051631a851be960e11b815260040160405180910390fd5b6101645433600090815261016a6020526040902054612adc908390615ae7565b1115612afb5760405163d330f98560e01b815260040160405180910390fd5b612b05338b613cc2565b50505050505050505050565b612b19613115565b60008111612b615760405162461bcd60e51b81526020600482015260156024820152744c7a4170703a20696e76616c6964206d696e47617360581b604482015260640161109d565b61ffff83811660008181526067602090815260408083209487168084529482529182902085905581519283528201929092529081018290527f9d5c7c0b934da8fefa9c7760c98383778a12dfbfc0c3b3106518f43fb9508ac090606001612460565b612bcb613115565b61016455565b600054610100900460ff1615808015612bf15750600054600160ff909116105b80612c0b5750303b158015612c0b575060005460ff166001145b612c6e5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161109d565b6000805460ff191660011790558015612c91576000805461ff0019166101001790555b612c9e8888888686613ea6565b610163612cab8682615900565b50610162805461016880546001600160a01b0388166001600160a01b03199091161790556109c46101615567011c37937e080000610165556365b1b290610166556365b304106101675560016101645560ff60a01b19600161ff0160a01b03199091163317600160a81b171690558015612d5f576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050505050565b6000612d7361326d565b6001600160a01b039384166000908152600791909101602090815260408083209490951682529290925250205460ff1690565b612dae613115565b6101628054911515600160a81b0260ff60a81b19909216919091179055565b612dd5613115565b61ffff83166000908152606660205260409020612df3828483615b94565b507ffa41487ad5d6728f0b19276fa1eddc16558578f5109fc39d2dc33c3230470dab8383836040516124609392919061589a565b612e2f613115565b61016280546001600160a01b0319166001600160a01b0392909216919091179055565b60008060008686604051602001612e6a929190615c53565b60408051601f198184030181529082905260655463040a7bb160e41b83529092506001600160a01b0316906340a7bb1090612eb1908b90309086908b908b90600401615c78565b6040805180830381865afa158015612ecd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ef19190615ccc565b92509250509550959350505050565b612f08613115565b6001600160a01b038116612f6d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161109d565b612f7681613986565b50565b606554604051633d7b2f6f60e21b815261ffff808716600483015285166024820152306044820152606481018390526060916001600160a01b03169063f5ecbdbc90608401600060405180830381865afa158015612fdb573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526130039190810190615cf0565b95945050505050565b60006101665442101580156130245750610167544211155b905090565b60008061308c5a60966366ad5c8a60e01b898989896040516024016130519493929190615d24565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091523092919061402c565b9150915081611a4657611a4686868686856140b6565b60006301ffc9a760e01b6001600160e01b0319831614806130d357506380ac58cd60e01b6001600160e01b03198316145b8061128e5750506001600160e01b031916635b5e139f60e01b1490565b60006001600160e01b0319821663152a902d60e11b148061128e575061128e826130a2565b6033546001600160a01b03163314611b655760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161109d565b6127106001600160601b03821611156131dd5760405162461bcd60e51b815260206004820152602a60248201527f455243323938313a20726f79616c7479206665652077696c6c206578636565646044820152692073616c65507269636560b01b606482015260840161109d565b6001600160a01b0382166132335760405162461bcd60e51b815260206004820152601960248201527f455243323938313a20696e76616c696420726563656976657200000000000000604482015260640161109d565b604080518082019091526001600160a01b039092168083526001600160601b039091166020909201829052600160a01b9091021761012d55565b7f2569078dfb4b0305704d3008e7403993ae9601b85f7ae5e742de3de8f8011c4090565b6000816001111580156132ab57506132a761326d565b5482105b801561128e5750600160e01b6132bf61326d565b60008481526004919091016020526040902054161592915050565b6001600160a01b0316731e0049783f008a0085193e00003d00cd54003c711490565b69c617113400112233445560005230601a5280603a52600080604460166daaeb6d7670e522a718067333cd4e5afa613338573d6000803e3d6000fd5b6000603a5250565b6112a682826001614153565b600061335782613782565b9050836001600160a01b0316816001600160a01b03161461338a5760405162a1148160e81b815260040160405180910390fd5b60008061339684614208565b915091506133bb81876133a63390565b6001600160a01b039081169116811491141790565b6133e6576133c98633612d69565b6133e657604051632ce44b5f60e11b815260040160405180910390fd5b6001600160a01b03851661340d57604051633a954ecd60e21b815260040160405180910390fd5b801561341857600082555b61342061326d565b6001600160a01b038716600090815260059190910160205260409020805460001901905561344c61326d565b6001600160a01b03861660008181526005929092016020526040909120805460010190554260a01b17600160e11b1761348361326d565b60008681526004919091016020526040812091909155600160e11b841690036134f957600184016134b261326d565b6000828152600491909101602052604081205490036134f7576134d361326d565b5481146134f757836134e361326d565b600083815260049190910160205260409020555b505b83856001600160a01b0316876001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4611a46565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110613579576135796159bf565b602090810291909101015292915050565b61142c83838360405180602001604052806000815250612498565b60008451116135f65760405162461bcd60e51b815260206004820152601a60248201527f4c7a4170703a20746f6b656e4964735b5d20697320656d707479000000000000604482015260640161109d565b83516001148061361a575061ffff8616600090815260fc6020526040902054845111155b61367a5760405162461bcd60e51b815260206004820152602b60248201527f4f4e46543732313a2062617463682073697a652065786365656473206473742060448201526a18985d18da081b1a5b5a5d60aa1b606482015260840161109d565b60005b84518110156136b3576136ab88888888858151811061369e5761369e6159bf565b6020026020010151614230565b60010161367d565b50600085856040516020016136c9929190615c53565b604051602081830303815290604052905061370e87600184885160fd60008d61ffff1661ffff168152602001908152602001600020546137099190615838565b61423b565b61371c87828686863461431a565b8560405161372a9190615d62565b6040518091039020886001600160a01b03168861ffff167fe1b87c47fdeb4f9cbadbca9df3af7aba453bb6e501075d0440d88125b711522a8860405161377091906152c3565b60405180910390a45050505050505050565b6000816001116138165761379461326d565b600083815260049190910160205260408120549150600160e01b821690036138165780600003613811576137c661326d565b5482106137e657604051636f96cda160e11b815260040160405180910390fd5b6137ee61326d565b6000199092016000818152600493909301602052604090922054905080156137e6575b919050565b604051636f96cda160e11b815260040160405180910390fd5b600080828060200190518101906138469190615a1a565b60148201519193509150600061385e88838386613b5a565b905082518110156139325784516020808701919091206040805160808101825261ffff808d1682526001600160a01b03808816838701908152838501888152600160608601818152600089815260fe909a529887902095518654935190941662010000026001600160b01b03199093169390941692909217178355519082015592516002909301805493151560ff199094169390931790925590517f10e0b70d256bccc84b7027506978bd8b68984a870788b93b479def144c839ad7906139289083908990615d7e565b60405180910390a1505b816001600160a01b03168760405161394a9190615d62565b60405180910390208961ffff167f5b821db8a46f8ecbe1941ba2f51cfeea9643268b56631f70d45e2a745d9902658660405161377091906152c3565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60408051608081018252600080825260208201819052918101829052606081019190915261128e613a0761326d565b600084815260049190910160205260409020546144a3565b6000613a2961326d565b5490506000829003613a4e5760405163b562e8dd60e01b815260040160405180910390fd5b680100000000000000018202613a6261326d565b6001600160a01b038516600081815260059290920160205260409091208054929092019091554260a01b6001841460e11b1717613a9d61326d565b600083815260049190910160205260408120919091556001600160a01b0384169083830190839083907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8180a4600183015b818114613b2757808360007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600080a4600101613aef565b5081600003613b4857604051622e076360e81b815260040160405180910390fd5b80613b5161326d565b555061142c9050565b6000825b82518110156130035760fb545a1061300357613b948686858481518110613b8757613b876159bf565b60200260200101516144ea565b80613b9e81615d97565b915050613b5e565b6000613bb061326d565b54919050565b606081613bc481601f615ae7565b1015613c035760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b604482015260640161109d565b613c0d8284615ae7565b84511015613c515760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b604482015260640161109d565b606082158015613c70576040519150600082526020820160405261195e565b6040519150601f8416801560200281840101858101878315602002848b0101015b81831015613ca9578051835260209283019201613c91565b5050858452601f01601f19166040525050949350505050565b6001600160a01b038216600090815261016a602052604081208054839290613ceb908490615ae7565b909155506112a690508282613a1f565b80613d0461326d565b336000818152600792909201602090815260408084206001600160a01b03881680865290835293819020805460ff19169515159590951790945592518415158152919290917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b613d83848484611545565b6001600160a01b0383163b1561158357613d9f84848484614523565b611583576040516368d2bf6b60e11b815260040160405180910390fd5b60408051608081018252600080825260208201819052918101829052606081019190915261128e613dec83613782565b6144a3565b6060613dfc82613291565b613e325760405162461bcd60e51b81526020600482015260076024820152662165786973747360c81b604482015260640161109d565b600061015f8054613e42906157d8565b905011613e5e576040518060200160405280600081525061128e565b61015f613e6a8361460b565b604051602001613e7b929190615db0565b60405160208183030381529060405292915050565b600082613e9d858461469d565b14949350505050565b600080516020615f9683398151915254610100900460ff16613edb57600080516020615f968339815191525460ff1615613edf565b303b155b613f515760405162461bcd60e51b815260206004820152603760248201527f455243373231415f5f496e697469616c697a61626c653a20636f6e747261637460448201527f20697320616c726561647920696e697469616c697a6564000000000000000000606482015260840161109d565b600080516020615f9683398151915254610100900460ff16158015613f8d57600080516020615f96833981519152805461ffff19166101011790555b600054610100900460ff16613fb45760405162461bcd60e51b815260040161109d90615e37565b613fbe86866146e0565b613fc66147a0565b613fd083836147c7565b61015f613fdd8582615900565b50613fe6614808565b610160805460ff19166001179055614006613ffe3390565b6101f461316f565b8015611a46575050600080516020615f96833981519152805461ff001916905550505050565b6000606060008060008661ffff166001600160401b0381111561405157614051614da3565b6040519080825280601f01601f19166020018201604052801561407b576020820181803683370190505b50905060008087516020890160008d8df191503d92508683111561409d578692505b828152826000602083013e909890975095505050505050565b8180519060200120609760008761ffff1661ffff168152602001908152602001600020856040516140e79190615d62565b9081526040805191829003602090810183206001600160401b0388166000908152915220919091557fe183f33de2837795525b4792ca4cd60535bd77c53b7e7030060bfcf5734d6b0c906141449087908790879087908790615e82565b60405180910390a15050505050565b600061415e83611967565b9050811561419d57336001600160a01b0382161461419d576141808133612d69565b61419d576040516367d9dca160e11b815260040160405180910390fd5b836141a661326d565b6000858152600691909101602052604080822080546001600160a01b0319166001600160a01b0394851617905551859287811692908516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259190a450505050565b600080600061421561326d565b60009485526006016020525050604090912080549092909150565b6115838430836117c8565b600061424683614827565b61ffff808716600090815260676020908152604080832093891683529290529081205491925090614278908490615ae7565b9050600081116142ca5760405162461bcd60e51b815260206004820152601a60248201527f4c7a4170703a206d696e4761734c696d6974206e6f7420736574000000000000604482015260640161109d565b80821015611a465760405162461bcd60e51b815260206004820152601b60248201527f4c7a4170703a20676173206c696d697420697320746f6f206c6f770000000000604482015260640161109d565b61ffff861660009081526066602052604081208054614338906157d8565b80601f0160208091040260200160405190810160405280929190818152602001828054614364906157d8565b80156143b15780601f10614386576101008083540402835291602001916143b1565b820191906000526020600020905b81548152906001019060200180831161439457829003601f168201915b5050505050905080516000036144225760405162461bcd60e51b815260206004820152603060248201527f4c7a4170703a2064657374696e6174696f6e20636861696e206973206e6f742060448201526f61207472757374656420736f7572636560801b606482015260840161109d565b61442d878751614883565b60655460405162c5803160e81b81526001600160a01b039091169063c5803100908490614468908b9086908c908c908c908c90600401615ed4565b6000604051808303818588803b15801561448157600080fd5b505af1158015614495573d6000803e3d6000fd5b505050505050505050505050565b604080516080810182526001600160a01b038316815260a083901c6001600160401b03166020820152600160e01b831615159181019190915260e89190911c606082015290565b6144f381613291565b801561450f57503061450482611967565b6001600160a01b0316145b61451857600080fd5b61142c3083836117c8565b604051630a85bd0160e11b81526000906001600160a01b0385169063150b7a0290614558903390899088908890600401615f3b565b6020604051808303816000875af1925050508015614593575060408051601f3d908101601f1916820190925261459091810190615f78565b60015b6145f1573d8080156145c1576040519150601f19603f3d011682016040523d82523d6000602084013e6145c6565b606091505b5080516000036145e9576040516368d2bf6b60e11b815260040160405180910390fd5b805181602001fd5b6001600160e01b031916630a85bd0160e11b14905061151d565b60606000614618836148f4565b60010190506000816001600160401b0381111561463757614637614da3565b6040519080825280601f01601f191660200182016040528015614661576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a850494508461466b57509392505050565b600081815b84518110156146d8576146ce828683815181106146c1576146c16159bf565b60200260200101516149cc565b91506001016146a2565b509392505050565b600080516020615f9683398151915254610100900460ff166147615760405162461bcd60e51b815260206004820152603460248201527f455243373231415f5f496e697469616c697a61626c653a20636f6e7472616374604482015273206973206e6f7420696e697469616c697a696e6760601b606482015260840161109d565b8161476a61326d565b600201906147789082615900565b508061478261326d565b600301906147909082615900565b50600161479b61326d565b555050565b600054610100900460ff16611b655760405162461bcd60e51b815260040161109d90615e37565b600054610100900460ff166147ee5760405162461bcd60e51b815260040161109d90615e37565b6147f66149f8565b6147ff81614a28565b6112a682614a71565b611b65733cc6cdda760b79bafa08df41ecfa224f810dceb66001614a98565b600060228251101561487b5760405162461bcd60e51b815260206004820152601c60248201527f4c7a4170703a20696e76616c69642061646170746572506172616d7300000000604482015260640161109d565b506022015190565b61ffff8216600090815260686020526040812054908190036148a457506127105b8082111561142c5760405162461bcd60e51b815260206004820181905260248201527f4c7a4170703a207061796c6f61642073697a6520697320746f6f206c61726765604482015260640161109d565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b83106149335772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef8100000000831061495f576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061497d57662386f26fc10000830492506010015b6305f5e1008310614995576305f5e100830492506008015b61271083106149a957612710830492506004015b606483106149bb576064830492506002015b600a831061128e5760010192915050565b60008183106149e85760008281526020849052604090206117c1565b5060009182526020526040902090565b600054610100900460ff16614a1f5760405162461bcd60e51b815260040161109d90615e37565b611b6533613986565b600054610100900460ff16614a4f5760405162461bcd60e51b815260040161109d90615e37565b606580546001600160a01b0319166001600160a01b0392909216919091179055565b600054610100900460ff166114395760405162461bcd60e51b815260040161109d90615e37565b6001600160a01b0390911690637d3e3dbe81614ac55782614abe5750634420e486614ac5565b5063a0af29035b8060e01b60005230600452826024526004600060446000806daaeb6d7670e522a718067333cd4e5af1614b03578060005160e01c03614b0357600080fd5b5060006024525050565b803561ffff8116811461381157600080fd5b60008083601f840112614b3157600080fd5b5081356001600160401b03811115614b4857600080fd5b60208301915083602082850101111561165857600080fd5b80356001600160401b038116811461381157600080fd5b60008060008060008060808789031215614b9057600080fd5b614b9987614b0d565b955060208701356001600160401b0380821115614bb557600080fd5b614bc18a838b01614b1f565b9097509550859150614bd560408a01614b60565b94506060890135915080821115614beb57600080fd5b50614bf889828a01614b1f565b979a9699509497509295939492505050565b6001600160e01b031981168114612f7657600080fd5b600060208284031215614c3257600080fd5b81356117c181614c0a565b6001600160a01b0381168114612f7657600080fd5b803561381181614c3d565b60008060408385031215614c7057600080fd5b8235614c7b81614c3d565b915060208301356001600160601b0381168114614c9757600080fd5b809150509250929050565b60005b83811015614cbd578181015183820152602001614ca5565b50506000910152565b60008151808452614cde816020860160208601614ca2565b601f01601f19169290920160200192915050565b6020815260006117c16020830184614cc6565b600060208284031215614d1757600080fd5b6117c182614b0d565b600060208284031215614d3257600080fd5b5035919050565b60008060408385031215614d4c57600080fd5b8235614d5781614c3d565b946020939093013593505050565b60008060408385031215614d7857600080fd5b614d5783614b0d565b60008060408385031215614d9457600080fd5b50508035926020909101359150565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715614de157614de1614da3565b604052919050565b60006001600160401b03821115614e0257614e02614da3565b50601f01601f191660200190565b600082601f830112614e2157600080fd5b8135614e34614e2f82614de9565b614db9565b818152846020838601011115614e4957600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060808587031215614e7c57600080fd5b8435614e8781614c3d565b93506020850135614e9781614c3d565b92506040850135915060608501356001600160401b03811115614eb957600080fd5b614ec587828801614e10565b91505092959194509250565b600080600060608486031215614ee657600080fd5b8335614ef181614c3d565b92506020840135614f0181614c3d565b929592945050506040919091013590565b8035801515811461381157600080fd5b600080600080600060a08688031215614f3a57600080fd5b614f4386614b0d565b945060208601356001600160401b0380821115614f5f57600080fd5b614f6b89838a01614e10565b955060408801359450614f8060608901614f12565b93506080880135915080821115614f9657600080fd5b50614fa388828901614e10565b9150509295509295909350565b600080600060408486031215614fc557600080fd5b614fce84614b0d565b925060208401356001600160401b03811115614fe957600080fd5b614ff586828701614b1f565b9497909650939450505050565b600080600080600080600060e0888a03121561501d57600080fd5b873561502881614c3d565b965061503660208901614b0d565b955060408801356001600160401b038082111561505257600080fd5b61505e8b838c01614e10565b965060608a0135955060808a0135915061507782614c3d565b90935060a08901359061508982614c3d565b90925060c0890135908082111561509f57600080fd5b506150ac8a828b01614e10565b91505092959891949750929550565b6000602082840312156150cd57600080fd5b81356001600160401b038111156150e357600080fd5b61151d84828501614e10565b60008060006060848603121561510457600080fd5b61510d84614b0d565b925060208401356001600160401b0381111561512857600080fd5b61513486828701614e10565b92505061514360408501614b60565b90509250925092565b60008083601f84011261515e57600080fd5b5081356001600160401b0381111561517557600080fd5b6020830191508360208260051b850101111561165857600080fd5b600080602083850312156151a357600080fd5b82356001600160401b038111156151b957600080fd5b6151c58582860161514c565b90969095509350505050565b80516001600160a01b031682526020808201516001600160401b03169083015260408082015115159083015260609081015162ffffff16910152565b6020808252825182820181905260009190848201906040850190845b81811015611ca35761523c8385516151d1565b9284019260809290920191600101615229565b60006020828403121561526157600080fd5b81356117c181614c3d565b60006020828403121561527e57600080fd5b6117c182614f12565b60008151808452602080850194506020840160005b838110156152b85781518752958201959082019060010161529c565b509495945050505050565b6020815260006117c16020830184615287565b600080600080604085870312156152ec57600080fd5b84356001600160401b038082111561530357600080fd5b61530f8883890161514c565b9096509450602087013591508082111561532857600080fd5b506153358782880161514c565b95989497509550505050565b6000806040838503121561535457600080fd5b61535d83614b0d565b915061536b60208401614b0d565b90509250929050565b60008060006060848603121561538957600080fd5b833561539481614c3d565b95602085013595506040909401359392505050565b600080604083850312156153bc57600080fd5b82356153c781614c3d565b915061536b60208401614f12565b60006001600160401b038211156153ee576153ee614da3565b5060051b60200190565b600082601f83011261540957600080fd5b81356020615419614e2f836153d5565b8083825260208201915060208460051b87010193508684111561543b57600080fd5b602086015b848110156154575780358352918301918301615440565b509695505050505050565b600080600080600080600060e0888a03121561547d57600080fd5b873561548881614c3d565b965061549660208901614b0d565b955060408801356001600160401b03808211156154b257600080fd5b6154be8b838c01614e10565b965060608a01359150808211156154d457600080fd5b6154e08b838c016153f8565b955060808a013591506154f282614c3d565b81945061550160a08b01614c52565b935060c08a013591508082111561509f57600080fd5b6080810161128e82846151d1565b60008060008060006080868803121561553d57600080fd5b61554686614b0d565b945061555460208701614b0d565b93506040860135925060608601356001600160401b0381111561557657600080fd5b61558288828901614b1f565b969995985093965092949392505050565b6000806000604084860312156155a857600080fd5b8335925060208401356001600160401b038111156155c557600080fd5b614ff58682870161514c565b6000806000606084860312156155e657600080fd5b6155ef84614b0d565b92506155fd60208501614b0d565b9150604084013590509250925092565b600080600080600080600060e0888a03121561562857600080fd5b87356001600160401b038082111561563f57600080fd5b61564b8b838c01614e10565b985060208a013591508082111561566157600080fd5b61566d8b838c01614e10565b975060408a013591508082111561568357600080fd5b61568f8b838c01614e10565b965060608a01359150808211156156a557600080fd5b506156b28a828b01614e10565b9450506156c160808901614c52565b925060a088013591506156d660c08901614c52565b905092959891949750929550565b600080604083850312156156f757600080fd5b823561570281614c3d565b91506020830135614c9781614c3d565b600080600080600060a0868803121561572a57600080fd5b61573386614b0d565b945060208601356001600160401b038082111561574f57600080fd5b61575b89838a01614e10565b9550604088013591508082111561577157600080fd5b61577d89838a016153f8565b9450614f8060608901614f12565b600080600080608085870312156157a157600080fd5b6157aa85614b0d565b93506157b860208601614b0d565b925060408501356157c881614c3d565b9396929550929360600135925050565b600181811c908216806157ec57607f821691505b60208210810361580c57634e487b7160e01b600052602260045260246000fd5b50919050565b8183823760009101908152919050565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761128e5761128e615822565b60008261586c57634e487b7160e01b600052601260045260246000fd5b500490565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b61ffff84168152604060208201526000613003604083018486615871565b601f82111561142c576000816000526020600020601f850160051c810160208610156158e15750805b601f850160051c820191505b81811015611a46578281556001016158ed565b81516001600160401b0381111561591957615919614da3565b61592d8161592784546157d8565b846158b8565b602080601f831160018114615962576000841561594a5750858301515b600019600386901b1c1916600185901b178555611a46565b600085815260208120601f198616915b8281101561599157888601518255948401946001909101908401615972565b50858210156159af5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052603260045260246000fd5b600082601f8301126159e657600080fd5b81516159f4614e2f82614de9565b818152846020838601011115615a0957600080fd5b61151d826020830160208701614ca2565b60008060408385031215615a2d57600080fd5b82516001600160401b0380821115615a4457600080fd5b615a50868387016159d5565b9350602091508185015181811115615a6757600080fd5b85019050601f81018613615a7a57600080fd5b8051615a88614e2f826153d5565b81815260059190911b82018301908381019088831115615aa757600080fd5b928401925b82841015615ac557835182529284019290840190615aac565b80955050505050509250929050565b8181038181111561128e5761128e615822565b8082018082111561128e5761128e615822565b8284823760609190911b6bffffffffffffffffffffffff19169101908152601401919050565b600061ffff808816835280871660208401525084604083015260806060830152615b4e608083018486615871565b979650505050505050565b61ffff86168152608060208201526000615b77608083018688615871565b6001600160401b0394909416604083015250606001529392505050565b6001600160401b03831115615bab57615bab614da3565b615bbf83615bb983546157d8565b836158b8565b6000601f841160018114615bf35760008515615bdb5750838201355b600019600387901b1c1916600186901b1783556113ab565b600083815260209020601f19861690835b82811015615c245786850135825560209485019460019092019101615c04565b5086821015615c415760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b604081526000615c666040830185614cc6565b82810360208401526130038185615287565b61ffff861681526001600160a01b038516602082015260a060408201819052600090615ca690830186614cc6565b84151560608401528281036080840152615cc08185614cc6565b98975050505050505050565b60008060408385031215615cdf57600080fd5b505080516020909101519092909150565b600060208284031215615d0257600080fd5b81516001600160401b03811115615d1857600080fd5b61151d848285016159d5565b61ffff85168152608060208201526000615d416080830186614cc6565b6001600160401b03851660408401528281036060840152615b4e8185614cc6565b60008251615d74818460208701614ca2565b9190910192915050565b82815260406020820152600061151d6040830184614cc6565b600060018201615da957615da9615822565b5060010190565b6000808454615dbe816157d8565b60018281168015615dd65760018114615deb57615e1a565b60ff1984168752821515830287019450615e1a565b8860005260208060002060005b85811015615e115781548a820152908401908201615df8565b50505082870194505b505050508351615e2e818360208801614ca2565b01949350505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b61ffff8616815260a060208201526000615e9f60a0830187614cc6565b6001600160401b03861660408401528281036060840152615ec08186614cc6565b90508281036080840152615cc08185614cc6565b61ffff8716815260c060208201526000615ef160c0830188614cc6565b8281036040840152615f038188614cc6565b6001600160a01b0387811660608601528616608085015283810360a08501529050615f2e8185614cc6565b9998505050505050505050565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090615f6e90830184614cc6565b9695505050505050565b600060208284031215615f8a57600080fd5b81516117c181614c0a56feee151c8401928dc223602bb187aff91b9a56c7cae5476ef1b3287b085a16c85fa264697066735822122019a0d1fb39c9365cd4e024e9b7ae73e169a22c027d7155502a4c64e92bbd2a2664736f6c63430008160033