solc-0.8.35 0x7d4e742018fb52e48b08be73d041c18b21de6fb5 optimized-low-runs

18971 bytes

608060405234801561000f575f5ffd5b5060043610610223575f3560e01c80630a756983146102275780630eafb25b14610231578063181f5a771461025757806322adbc781461026c57806329937268146102a6578063313ce567146102fa5780634fb174701461033357806350d25bcd1461034657806354fd4d501461034e578063643dc10514610356578063666cab8d14610369578063668a0f021461037e5780636b14daf81461038657806370da2f67146103a95780637284e416146103d057806379ba5097146103d85780638038e4a1146103e057806381ff7048146103e85780638205bf6a146104175780638823da6c1461041f5780638ac28d5a146104325780638da5cb5b1461044557806398e5b12a1461045a5780639a6fc8f51461047a5780639bd2c0b1146104c15780639c849b30146105025780639e3ceeab14610515578063a118f24914610528578063afcb95d71461053b578063b121e1471461056b578063b1dc65a41461057e578063b5ab58dc14610591578063b633620c146105a4578063c1075329146105b7578063c4c92b37146105ca578063d09dc339146105db578063daffc4b5146105e3578063dc7f0124146105f4578063e3d0e71214610601578063e4902f8214610614578063e5fe45771461063c578063e76d516814610685578063eb45716314610696578063eb5dcd6c146106a9578063f2fde38b146106bc578063fbffd2c1146106cf578063feaf968c146106e2575b5f5ffd5b61022f6106ea565b005b61024461023f366004613d10565b610732565b6040519081526020015b60405180910390f35b61025f610834565b60405161024e9190613d59565b6102937f000000000000000000000000000000000000000000000000000000000000000081565b60405160179190910b815260200161024e565b6102e9600b54600160501b810463ffffffff90811692600160701b8304821692600160901b8104831692600160b01b82041691600160d01b90910462ffffff1690565b60405161024e959493929190613d6b565b6103217f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff909116815260200161024e565b61022f610341366004613d9f565b610854565b610244610a6f565b610244600681565b61022f610364366004613de7565b610af6565b610371610c7f565b60405161024e9190613e9e565b610244610cdf565b610399610394366004613f5f565b610d50565b604051901515815260200161024e565b6102937f000000000000000000000000000000000000000000000000000000000000000081565b61025f610d77565b61022f610ddc565b61022f610e85565b600d54600a546040805163ffffffff8085168252600160201b909404909316602084015282015260600161024e565b610244610ece565b61022f61042d366004613d10565b610f56565b61022f610440366004613d10565b610fd9565b61044d611044565b60405161024e9190613fab565b610462611052565b6040516001600160501b03909116815260200161024e565b61048d610488366004613fbf565b6111b8565b604080516001600160501b03968716815260208101959095528401929092526060830152909116608082015260a00161024e565b604080518082018252600e546001600160a01b038116808352600160a01b90910463ffffffff1660209283018190528351918252918101919091520161024e565b61022f61051036600461402c565b611235565b61022f610523366004613d10565b6113e8565b61022f610536366004613d10565b611460565b600a54600b54604080515f8152602081019390935261010090910460081c63ffffffff169082015260600161024e565b61022f610579366004613d10565b6114d9565b61022f61058c366004614096565b6115a0565b61024461059f36600461417b565b611a4f565b6102446105b236600461417b565b611abc565b61022f6105c5366004614192565b611b21565b6012546001600160a01b031661044d565b610244611d3c565b600f546001600160a01b031661044d565b6015546103999060ff1681565b61022f61060f366004614277565b611dcd565b610627610622366004613d10565b6124af565b60405163ffffffff909116815260200161024e565b610644612563565b6040805195865263ffffffff909416602086015260ff9092169284019290925260179190910b60608301526001600160401b0316608082015260a00161024e565b6011546001600160a01b031661044d565b61022f6106a436600461434b565b612601565b61022f6106b7366004613d9f565b6126e4565b61022f6106ca366004613d10565b612813565b61022f6106dd366004613d10565b612824565b61048d612835565b6106f2612903565b60155460ff1615610730576015805460ff191690556040517f3be8a977a014527b50ae38adda80b56911c267328965c98ddc385d248f539638905f90a15b565b6001600160a01b0381165f9081526002602090815260408083208151606081018352905460ff80821615158084526101008304909116948301949094526201000090046001600160601b0316918101919091529061079257505f92915050565b600b5460208201515f91600160901b900463ffffffff169060069060ff16601f81106107c0576107c0614377565b600881049190910154600b546107f3926007166004026101000a90910463ffffffff90811691600160301b90041661439f565b63ffffffff1661080391906143bb565b61081190633b9aca006143bb565b905081604001516001600160601b03168161082c91906143d2565b949350505050565b60606040518060600160405280602481526020016149b760249139905090565b61085c612903565b6011546001600160a01b0390811690831681900361087957505050565b6040516370a0823160e01b81526001600160a01b038416906370a08231906108a5903090600401613fab565b602060405180830381865afa1580156108c0573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108e491906143e5565b506108ed612955565b6040516370a0823160e01b81525f906001600160a01b038316906370a082319061091b903090600401613fab565b602060405180830381865afa158015610936573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061095a91906143e5565b60405163a9059cbb60e01b81529091506001600160a01b0383169063a9059cbb9061098b90869085906004016143fc565b6020604051808303815f875af11580156109a7573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109cb9190614415565b610a1c5760405162461bcd60e51b815260206004820152601f60248201527f7472616e736665722072656d61696e696e672066756e6473206661696c65640060448201526064015b60405180910390fd5b601180546001600160a01b0319166001600160a01b0386811691821790925560405190918416907f4966a50c93f855342ccf6c5c0d358b85b91335b2acedc7da0932f691f351711a905f90a350505b5050565b5f610aaf335f368080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250610d5092505050565b610acb5760405162461bcd60e51b8152600401610a1390614434565b600b54600160301b900463ffffffff165f908152600c602052604090205460170b905090565b905090565b6012546001600160a01b0316610b0a611044565b6001600160a01b0316336001600160a01b03161480610b935750604051630d629b5f60e31b81526001600160a01b03821690636b14daf890610b549033905f903690600401614457565b602060405180830381865afa158015610b6f573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b939190614415565b610baf5760405162461bcd60e51b8152600401610a1390614496565b610bb7612955565b600b8054600160501b600160901b031916600160501b63ffffffff8981169190910263ffffffff60701b191691909117600160701b8883160217600160901b600160d01b031916600160901b8783160263ffffffff60b01b191617600160b01b918616919091021762ffffff60d01b1916600160d01b62ffffff8516021790556040517f0bf184bf1bba9699114bdceddaf338a1b364252c5e497cc01918dde92031713f90610c6f9088908890889088908890613d6b565b60405180910390a1505050505050565b60606005805480602002602001604051908101604052809291908181526020018280548015610cd557602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311610cb7575b5050505050905090565b5f610d1f335f368080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250610d5092505050565b610d3b5760405162461bcd60e51b8152600401610a1390614434565b600b54600160301b900463ffffffff16905090565b5f610d5b8383612cba565b80610d6e57506001600160a01b03831632145b90505b92915050565b6060610db8335f368080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250610d5092505050565b610dd45760405162461bcd60e51b8152600401610a1390614434565b610af1612ce9565b6001546001600160a01b03163314610e2f5760405162461bcd60e51b815260206004820152601660248201527526bab9ba10313290383937b837b9b2b21037bbb732b960511b6044820152606401610a13565b5f8054336001600160a01b0319808316821784556001805490911690556040516001600160a01b0390921692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a350565b610e8d612903565b60155460ff16610730576015805460ff191660011790556040517faebf329500988c6488a0074e5a0a9ff304561fc5c6fc877aeb1d59c8282c3480905f90a1565b5f610f0e335f368080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250610d5092505050565b610f2a5760405162461bcd60e51b8152600401610a1390614434565b50600b5463ffffffff600160301b90910481165f908152600c6020526040902054600160e01b90041690565b610f5e612903565b6001600160a01b0381165f9081526016602052604090205460ff1615610fd6576001600160a01b0381165f9081526016602052604090819020805460ff19169055517f3d68a6fce901d20453d1a7aa06bf3950302a735948037deb182a8db66df2a0d190610fcd908390613fab565b60405180910390a15b50565b6001600160a01b038181165f9081526013602052604090205416331461103b5760405162461bcd60e51b81526020600482015260176024820152764f6e6c792070617965652063616e20776974686472617760481b6044820152606401610a13565b610fd681612d70565b5f546001600160a01b031690565b5f61105b611044565b6001600160a01b0316336001600160a01b031614806110e85750600f54604051630d629b5f60e31b81526001600160a01b0390911690636b14daf8906110a99033905f903690600401614457565b602060405180830381865afa1580156110c4573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110e89190614415565b6111345760405162461bcd60e51b815260206004820152601d60248201527f4f6e6c79206f776e6572267265717565737465722063616e2063616c6c0000006044820152606401610a13565b600b54600a546040805191825263ffffffff6101008404600881901c8216602085015260ff811684840152915164ffffffffff90921693600160301b9004169133917f41e3990591fd372502daa15842da15bc7f41c75309ab3ff4f56f1848c178825c9181900360600190a26111ab8160016144cb565b63ffffffff169250505090565b5f5f5f5f5f6111fc335f368080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250610d5092505050565b6112185760405162461bcd60e51b8152600401610a1390614434565b61122186612f3c565b945094509450945094505b91939590929450565b61123d612903565b82811461128c5760405162461bcd60e51b815260206004820181905260248201527f7472616e736d6974746572732e73697a6520213d207061796565732e73697a656044820152606401610a13565b5f5b838110156113e1575f8585838181106112a9576112a9614377565b90506020020160208101906112be9190613d10565b90505f8484848181106112d3576112d3614377565b90506020020160208101906112e89190613d10565b6001600160a01b038084165f9081526013602052604090205491925016801580806113245750826001600160a01b0316826001600160a01b0316145b6113645760405162461bcd60e51b81526020600482015260116024820152701c185e595948185b1c9958591e481cd95d607a1b6044820152606401610a13565b6001600160a01b038481165f90815260136020526040902080546001600160a01b031916858316908117909155908316146113d157826001600160a01b0316826001600160a01b0316856001600160a01b03165f5160206149db5f395f51905f5260405160405180910390a45b50506001909201915061128e9050565b5050505050565b6113f0612903565b600f546001600160a01b039081169082168114610a6b57600f80546001600160a01b0319166001600160a01b0384161790556040517f27b89aede8b560578baaa25ee5ce3852c5eecad1e114b941bbd89e1eb4bae6349061145490839085906144e7565b60405180910390a15050565b611468612903565b6001600160a01b0381165f9081526016602052604090205460ff16610fd6576001600160a01b0381165f9081526016602052604090819020805460ff19166001179055517f87286ad1f399c8e82bf0c4ef4fcdc570ea2e1e92176e5c848b6413545b885db490610fcd908390613fab565b6001600160a01b038181165f908152601460205260409020541633146115415760405162461bcd60e51b815260206004820152601f60248201527f6f6e6c792070726f706f736564207061796565732063616e20616363657074006044820152606401610a13565b6001600160a01b038181165f8181526013602090815260408083208054336001600160a01b031980831682179093556014909452828520805490921690915590519416939092849290915f5160206149db5f395f51905f529190a45050565b5f5a604080516101008082018352600b5460ff8116835290810464ffffffffff9081166020808501829052600160301b840463ffffffff90811696860196909652600160501b840486166060860152600160701b840486166080860152600160901b8404861660a0860152600160b01b840490951660c0850152600160d01b90920462ffffff1660e08401529394509092918c0135918216116116745760405162461bcd60e51b815260206004820152600c60248201526b1cdd185b19481c995c1bdc9d60a21b6044820152606401610a13565b335f9081526002602052604090205460ff166116cd5760405162461bcd60e51b81526020600482015260186024820152773ab730baba3437b934bd32b2103a3930b739b6b4ba3a32b960411b6044820152606401610a13565b600a548b35146117175760405162461bcd60e51b81526020600482015260156024820152740c6dedcccd2ce88d2cecae6e840dad2e6dac2e8c6d605b1b6044820152606401610a13565b6117258a8a8a8a8a8a612fc2565b8151611732906001614501565b60ff1687146117805760405162461bcd60e51b815260206004820152601a60248201527977726f6e67206e756d626572206f66207369676e61747572657360301b6044820152606401610a13565b8685146117cf5760405162461bcd60e51b815260206004820152601e60248201527f7369676e617475726573206f7574206f6620726567697374726174696f6e00006044820152606401610a13565b5f8a8a6040516117e092919061451a565b6040519081900381206117f7918e90602001614529565b60408051601f1981840301815282825280516020918201208383019092525f808452908301819052909250905f5b8a811015611982575f6001858a846020811061184357611843614377565b61185091901a601b614501565b8f8f8681811061186257611862614377565b905060200201358e8e8781811061187b5761187b614377565b905060200201356040515f81526020016040526040516118b7949392919093845260ff9290921660208401526040830152606082015260800190565b6020604051602081039080840390855afa1580156118d7573d5f5f3e3d5ffd5b505060408051601f198101516001600160a01b0381165f9081526003602090815290849020838501909452925460ff80821615158085526101009092041693830193909352909550925090506119615760405162461bcd60e51b815260206004820152600f60248201526e39b4b3b730ba3ab9329032b93937b960891b6044820152606401610a13565b826020015160080260ff166001901b84019350508080600101915050611825565b5081827e0101010101010101010101010101010101010101010101010101010101010116146119e65760405162461bcd60e51b815260206004820152601060248201526f323ab83634b1b0ba329039b4b3b732b960811b6044820152606401610a13565b505f9150611a339050838d836020020135848e8e8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061305892505050565b9050611a418382863361351d565b505050505050505050505050565b5f611a8f335f368080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250610d5092505050565b611aab5760405162461bcd60e51b8152600401610a1390614434565b611ab482613630565b90505b919050565b5f611afc335f368080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250610d5092505050565b611b185760405162461bcd60e51b8152600401610a1390614434565b611ab48261365f565b611b29611044565b6001600160a01b0316336001600160a01b03161480611bb65750601254604051630d629b5f60e31b81526001600160a01b0390911690636b14daf890611b779033905f903690600401614457565b602060405180830381865afa158015611b92573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611bb69190614415565b611bd25760405162461bcd60e51b8152600401610a1390614496565b5f611bdb613695565b6011546040516370a0823160e01b81529192505f916001600160a01b03909116906370a0823190611c10903090600401613fab565b602060405180830381865afa158015611c2b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c4f91906143e5565b905081811015611c985760405162461bcd60e51b8152602060048201526014602482015273696e73756666696369656e742062616c616e636560601b6044820152606401610a13565b6011546001600160a01b031663a9059cbb85611cbd611cb7868661453f565b87613844565b6040518363ffffffff1660e01b8152600401611cda9291906143fc565b6020604051808303815f875af1158015611cf6573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d1a9190614415565b611d365760405162461bcd60e51b8152600401610a1390614552565b50505050565b6011546040516370a0823160e01b81525f9182916001600160a01b03909116906370a0823190611d70903090600401613fab565b602060405180830381865afa158015611d8b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611daf91906143e5565b90505f611dba613695565b9050611dc6818361457e565b9250505090565b611dd5612903565b601f86511115611e1a5760405162461bcd60e51b815260206004820152601060248201526f746f6f206d616e79206f7261636c657360801b6044820152606401610a13565b8451865114611e645760405162461bcd60e51b81526020600482015260166024820152750dee4c2c6d8ca40d8cadccee8d040dad2e6dac2e8c6d60531b6044820152606401610a13565b8551611e718560036145a4565b60ff1610611ebc5760405162461bcd60e51b81526020600482015260186024820152770ccc2ead8e8f25adee4c2c6d8ca40cc40e8dede40d0d2ced60431b6044820152606401610a13565b611ec88460ff1661385a565b60408051600160f81b60208201527f0000000000000000000000000000000000000000000000000000000000000000821b60218201527f000000000000000000000000000000000000000000000000000000000000000090911b603982015260510160405160208183030381529060405280519060200120838051906020012014611f8d5760405162461bcd60e51b8152602060048201526015602482015274696e76616c6964206f6e636861696e436f6e66696760581b6044820152606401610a13565b6040805160c0810182528781526020810187905260ff861691810191909152606081018490526001600160401b038316608082015260a08101829052600b805465ffffffffff0019169055611fe0612955565b6004545f5b8181101561207c575f6004828154811061200157612001614377565b5f918252602082200154600580546001600160a01b039092169350908490811061202d5761202d614377565b5f9182526020808320909101546001600160a01b039485168352600382526040808420805461ffff1916905594168252600290529190912080546001600160701b031916905550600101611fe5565b5061208860045f613cd2565b61209360055f613cd2565b5f5b8251518110156122f15760035f845f015183815181106120b7576120b7614377565b6020908102919091018101516001600160a01b031682528101919091526040015f205460ff16156121245760405162461bcd60e51b81526020600482015260176024820152767265706561746564207369676e6572206164647265737360481b6044820152606401610a13565b604080518082019091526001815260ff82166020820152835180516003915f918590811061215457612154614377565b6020908102919091018101516001600160a01b03168252818101929092526040015f908120835181549484015161ffff1990951690151561ff0019161761010060ff909516949094029390931790925584015180516002929190849081106121be576121be614377565b6020908102919091018101516001600160a01b031682528101919091526040015f205460ff16156122305760405162461bcd60e51b815260206004820152601c60248201527b7265706561746564207472616e736d6974746572206164647265737360201b6044820152606401610a13565b60405180606001604052806001151581526020018260ff1681526020015f6001600160601b031681525060025f8560200151848151811061227357612273614377565b6020908102919091018101516001600160a01b031682528181019290925260409081015f20835181549385015194909201516001600160601b0316620100000262010000600160701b031960ff959095166101000261ff00199315159390931661ffff19909416939093179190911792909216179055600101612095565b50815160049061230190826145c0565b50602082015160059061231490826145c0565b506040820151600b805460ff191660ff909216919091179055600d805463ffffffff60201b198116600160201b63ffffffff4381168202928317855590830481169360019390925f9261236e9286929082169116176144cb565b92506101000a81548163ffffffff021916908363ffffffff1602179055506123cb4630600d5f9054906101000a900463ffffffff1663ffffffff16865f01518760200151886040015189606001518a608001518b60a0015161389e565b600a819055600d5484516020860151604080880151606089015160808a015160a08b015193517f1591690b8638f5fb2dbec82ac741805ac5da8b45dc5263f4875b0496fdce4e0598612434988b98919763ffffffff90911696919590949093909290919061465c565b60405180910390a1600b54600160301b900463ffffffff165f5b8451518110156124a25781600682601f811061246c5761246c614377565b600891828204019190066004026101000a81548163ffffffff021916908363ffffffff160217905550808060010191505061244e565b5050505050505050505050565b6001600160a01b0381165f9081526002602090815260408083208151606081018352905460ff80821615158084526101008304909116948301949094526201000090046001600160601b0316918101919091529061250f57505f92915050565b6006816020015160ff16601f811061252957612529614377565b600881049190910154600b5461255c926007166004026101000a90910463ffffffff90811691600160301b90041661439f565b9392505050565b5f808080803332146125ae5760405162461bcd60e51b81526020600482015260146024820152734f6e6c792063616c6c61626c6520627920454f4160601b6044820152606401610a13565b5050600a54600b5463ffffffff600160301b820481165f908152600c60205260409020549296610100909204600881901c8216965064ffffffffff169450601783900b9350600160e01b90920490911690565b612609612903565b60408051808201909152600e546001600160a01b03808216808452600160a01b90920463ffffffff166020840152841614158061265657508163ffffffff16816020015163ffffffff1614155b156126df576040805180820182526001600160a01b0385811680835263ffffffff8681166020948501819052600e80546001600160c01b0319168417600160a01b830217905586518786015187519316835294820152909392909116917fb04e3a37abe9c0fcdfebdeae019a8e2b12ddf53f5d55ffb0caccc1bedaca1541910160405180910390a35b505050565b6001600160a01b038281165f9081526013602052604090205416331461274c5760405162461bcd60e51b815260206004820152601d60248201527f6f6e6c792063757272656e742070617965652063616e207570646174650000006044820152606401610a13565b6001600160a01b038116330361279e5760405162461bcd60e51b815260206004820152601760248201527631b0b73737ba103a3930b739b332b9103a379039b2b63360491b6044820152606401610a13565b6001600160a01b038083165f90815260146020526040902080548383166001600160a01b0319821681179092559091169081146126df576040516001600160a01b038084169133918616907f84f7c7c80bb8ed2279b4aab5f61cd05e6374073d38f46d7f32de8c30e9e38367905f90a4505050565b61281b612903565b610fd6816138f9565b61282c612903565b610fd68161399b565b5f5f5f5f5f612879335f368080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250610d5092505050565b6128955760405162461bcd60e51b8152600401610a1390614434565b6128f2600b54600160301b900463ffffffff9081165f818152600c602090815260409182902082516060810184529054601781900b808352600160c01b82048716938301849052600160e01b909104909516920182905291938490565b945094509450945094509091929394565b5f546001600160a01b031633146107305760405162461bcd60e51b815260206004820152601660248201527527b7363c9031b0b63630b1363290313c9037bbb732b960511b6044820152606401610a13565b601154600b54604080516103e08101918290526001600160a01b0390931692600160301b90920463ffffffff16915f91600690601f908285855b82829054906101000a900463ffffffff1663ffffffff168152602001906004019060208260030104928301926001038202915080841161298f579050505050505090505f6005805480602002602001604051908101604052809291908181526020018280548015612a2757602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311612a09575b509394505f93505050505b8151811015612cad575f60025f848481518110612a5157612a51614377565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f205f0160029054906101000a90046001600160601b03166001600160601b031690505f60025f858581518110612aaf57612aaf614377565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f205f0160026101000a8154816001600160601b0302191690836001600160601b031602179055505f8483601f8110612b0f57612b0f614377565b6020020151600b5490870363ffffffff9081169250600160901b909104168102633b9aca000282018015612ca2575f60135f878781518110612b5357612b53614377565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f205f9054906101000a90046001600160a01b03169050886001600160a01b031663a9059cbb82846040518363ffffffff1660e01b8152600401612bbd9291906143fc565b6020604051808303815f875af1158015612bd9573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612bfd9190614415565b612c195760405162461bcd60e51b8152600401610a1390614552565b878786601f8110612c2c57612c2c614377565b602002019063ffffffff16908163ffffffff1681525050886001600160a01b0316816001600160a01b0316878781518110612c6957612c69614377565b60200260200101516001600160a01b03165f5160206149fb5f395f51905f5285604051612c9891815260200190565b60405180910390a4505b505050600101612a32565b5060066113e183826146f1565b6001600160a01b0382165f9081526016602052604081205460ff1680610d6e57505060155460ff161592915050565b606060108054612cf89061478e565b80601f0160208091040260200160405190810160405280929190818152602001828054612d249061478e565b8015610cd55780601f10612d4657610100808354040283529160200191610cd5565b820191905f5260205f20905b815481529060010190602001808311612d5257509395945050505050565b6001600160a01b0381165f908152600260209081526040918290208251606081018452905460ff80821615158084526101008304909116938301939093526201000090046001600160601b031692810192909252612dcc575050565b5f612dd683610732565b905080156126df576001600160a01b038084165f908152601360205260409081902054601154915163a9059cbb60e01b815290831692919091169063a9059cbb90612e2790849086906004016143fc565b6020604051808303815f875af1158015612e43573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612e679190614415565b612e835760405162461bcd60e51b8152600401610a1390614552565b600b5f0160069054906101000a900463ffffffff166006846020015160ff16601f8110612eb257612eb2614377565b6008810491909101805460079092166004026101000a63ffffffff8181021990931693909216919091029190911790556001600160a01b038481165f81815260026020908152604091829020805462010000600160701b0319169055601154915186815291841693851692915f5160206149fb5f395f51905f52910160405180910390a450505050565b5f8080808063ffffffff6001600160501b0387161115612f6957505f93508392508291508190508061122c565b5050505063ffffffff8281165f908152600c602090815260409182902082516060810184529054601781900b808352600160c01b82048616938301849052600160e01b9091049094169201829052939491939250908490565b5f612fce8260206143bb565b612fd98560206143bb565b612fe5886101446143d2565b612fef91906143d2565b612ff991906143d2565b613003905f6143d2565b905036811461304f5760405162461bcd60e51b81526020600482015260186024820152770c6c2d8d8c8c2e8c240d8cadccee8d040dad2e6dac2e8c6d60431b6044820152606401610a13565b50505050505050565b5f5f613063836139ff565b9050601f81604001515111156130bb5760405162461bcd60e51b815260206004820152601e60248201527f6e756d206f62736572766174696f6e73206f7574206f6620626f756e647300006044820152606401610a13565b604081015151865160ff16106131135760405162461bcd60e51b815260206004820152601e60248201527f746f6f206665772076616c75657320746f207472757374206d656469616e00006044820152606401610a13565b64ffffffffff84166020870152604081015180515f9190613136906002906147c0565b8151811061314657613146614377565b602002602001015190508060170b7f000000000000000000000000000000000000000000000000000000000000000060170b131580156131ac57507f000000000000000000000000000000000000000000000000000000000000000060170b8160170b13155b6131f85760405162461bcd60e51b815260206004820152601e60248201527f6d656469616e206973206f7574206f66206d696e2d6d61782072616e676500006044820152606401610a13565b60408701805190613208826147df565b63ffffffff1663ffffffff168152505060405180606001604052808260170b8152602001835f015163ffffffff1681526020014263ffffffff16815250600c5f896040015163ffffffff1663ffffffff1681526020019081526020015f205f820151815f015f6101000a8154816001600160c01b03021916908360170b6001600160c01b031602179055506020820151815f0160186101000a81548163ffffffff021916908363ffffffff1602179055506040820151815f01601c6101000a81548163ffffffff021916908363ffffffff16021790555090505086600b5f820151815f015f6101000a81548160ff021916908360ff1602179055506020820151815f0160016101000a81548164ffffffffff021916908364ffffffffff1602179055506040820151815f0160066101000a81548163ffffffff021916908363ffffffff1602179055506060820151815f01600a6101000a81548163ffffffff021916908363ffffffff1602179055506080820151815f01600e6101000a81548163ffffffff021916908363ffffffff16021790555060a0820151815f0160126101000a81548163ffffffff021916908363ffffffff16021790555060c0820151815f0160166101000a81548163ffffffff021916908363ffffffff16021790555060e0820151815f01601a6101000a81548162ffffff021916908362ffffff160217905550905050866040015163ffffffff167fc797025feeeaf2cd924c99e9205acb8ec04d5cad21c41ce637a38fb6dee6016a8233855f01518660400151876020015188606001518d8d604051613467989796959493929190614803565b60405180910390a26040808801518351915163ffffffff92831681525f92909116907f0109fc6f55cf40689f02fbaad7af7fe7bbac8a3d2186600afc7d3e10cac602719060200160405180910390a3866040015163ffffffff168160170b7f0559884fd3a460db3073b7fc896cc77986f16e378210ded43186175bf646fc5f426040516134f691815260200190565b60405180910390a361350f87604001518260170b613aa0565b506060015195945050505050565b5f8360170b12611d36575f61354d633b9aca003a04866080015163ffffffff16876060015163ffffffff16613ba2565b9050601036025f5a90505f6135748663ffffffff1685858b60e0015162ffffff1686613bc7565b90505f670de0b6b3a76400006001600160c01b03891683026001600160a01b0388165f9081526002602052604090205460c08c01519290910492506201000090046001600160601b039081169163ffffffff16633b9aca0002828401019081168211156135e75750505050505050611d36565b6001600160a01b0388165f90815260026020526040902080546001600160601b03909216620100000262010000600160701b031990921691909117905550505050505050505050565b5f63ffffffff82111561364457505f919050565b5063ffffffff165f908152600c602052604090205460170b90565b5f63ffffffff82111561367357505f919050565b5063ffffffff9081165f908152600c6020526040902054600160e01b90041690565b5f5f60058054806020026020016040519081016040528092919081815260200182805480156136eb57602002820191905f5260205f20905b81546001600160a01b031681526001909101906020018083116136cd575b50508351600b54604080516103e08101918290529697509195600160301b90910463ffffffff1694505f93509150600690601f908285855b82829054906101000a900463ffffffff1663ffffffff168152602001906004019060208260030104928301926001038202915080841161372357509495505f9450505050505b838110156137ac578181601f811061378357613783614377565b6020020151613792908461439f565b6137a29063ffffffff16876143d2565b9550600101613769565b50600b546137cb90600160901b900463ffffffff16633b9aca006143bb565b6137d590866143bb565b94505f5b8381101561383c5760025f8683815181106137f6576137f6614377565b6020908102919091018101516001600160a01b031682528101919091526040015f2054613832906201000090046001600160601b0316876143d2565b95506001016137d9565b505050505090565b5f81831015613854575081610d71565b50919050565b805f10610fd65760405162461bcd60e51b815260206004820152601260248201527166206d75737420626520706f73697469766560701b6044820152606401610a13565b5f5f8a8a8a8a8a8a8a8a8a6040516020016138c1999897969594939291906148a7565b60408051601f1981840301815291905280516020909101206001600160f01b0316600160f01b179150505b9998505050505050505050565b336001600160a01b0382160361394b5760405162461bcd60e51b815260206004820152601760248201527621b0b73737ba103a3930b739b332b9103a379039b2b63360491b6044820152606401610a13565b600180546001600160a01b0319166001600160a01b038381169182179092555f8054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b6012546001600160a01b039081169082168114610a6b57601280546001600160a01b0319166001600160a01b0384161790556040517f793cb73064f3c8cde7e187ae515511e6e56d1ee89bf08b82fa60fb70f8d489129061145490839085906144e7565b613a3160405180608001604052805f63ffffffff16815260200160608152602001606081526020015f60170b81525090565b5f5f60605f85806020019051810190613a4a91906148f1565b92965090945092509050613a5e8683613c2a565b81516040805160208082019690965281519082018252918252805160808101825263ffffffff969096168652938501529183015260170b606082015292915050565b60408051808201909152600e546001600160a01b038116808352600160a01b90910463ffffffff166020830152613ad657505050565b5f613ae260018561439f565b63ffffffff8181165f818152600c6020908152604091829020549087015187519251602481019490945260179190910b60448401819052898516606485015260848401899052949550613b6393169160a40160408051601f198184030181529190526020810180516001600160e01b031663beed9b5160e01b179052613c99565b6113e15760405162461bcd60e51b815260206004820152601060248201526f696e73756666696369656e742067617360801b6044820152606401610a13565b5f8383811015613bb457600285850304015b613bbe8184613844565b95945050505050565b5f81861015613c185760405162461bcd60e51b815260206004820181905260248201527f6c6566744761732063616e6e6f742065786365656420696e697469616c4761736044820152606401610a13565b50633b9aca0094039190910101020290565b5f81516020613c3991906143bb565b613c449060a06143d2565b613c4e905f6143d2565b9050808351146126df5760405162461bcd60e51b81526020600482015260166024820152750e4cae0dee4e840d8cadccee8d040dad2e6dac2e8c6d60531b6044820152606401610a13565b5f5a6113888110613cca5761138881039050846040820482031115613cca575f5f8451602086015f888af150600191505b509392505050565b5080545f8255905f5260205f209061073091905f5b808211156126df575f81840155600101613ce7565b6001600160a01b0381168114610fd6575f5ffd5b5f60208284031215613d20575f5ffd5b813561255c81613cfc565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f610d6e6020830184613d2b565b63ffffffff958616815293851660208501529184166040840152909216606082015262ffffff909116608082015260a00190565b5f5f60408385031215613db0575f5ffd5b8235613dbb81613cfc565b91506020830135613dcb81613cfc565b809150509250929050565b63ffffffff81168114610fd6575f5ffd5b5f5f5f5f5f60a08688031215613dfb575f5ffd5b8535613e0681613dd6565b94506020860135613e1681613dd6565b93506040860135613e2681613dd6565b92506060860135613e3681613dd6565b9150608086013562ffffff81168114613e4d575f5ffd5b809150509295509295909350565b5f8151808452602084019350602083015f5b82811015613e945781516001600160a01b0316865260209586019590910190600101613e6d565b5093949350505050565b602081525f610d6e6020830184613e5b565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b0381118282101715613eec57613eec613eb0565b604052919050565b5f82601f830112613f03575f5ffd5b81356001600160401b03811115613f1c57613f1c613eb0565b613f2f601f8201601f1916602001613ec4565b818152846020838601011115613f43575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f60408385031215613f70575f5ffd5b8235613f7b81613cfc565b915060208301356001600160401b03811115613f95575f5ffd5b613fa185828601613ef4565b9150509250929050565b6001600160a01b0391909116815260200190565b5f60208284031215613fcf575f5ffd5b81356001600160501b038116811461255c575f5ffd5b5f5f83601f840112613ff5575f5ffd5b5081356001600160401b0381111561400b575f5ffd5b6020830191508360208260051b8501011115614025575f5ffd5b9250929050565b5f5f5f5f6040858703121561403f575f5ffd5b84356001600160401b03811115614054575f5ffd5b61406087828801613fe5565b90955093505060208501356001600160401b0381111561407e575f5ffd5b61408a87828801613fe5565b95989497509550505050565b5f5f5f5f5f5f5f5f60e0898b0312156140ad575f5ffd5b606089018a8111156140bd575f5ffd5b899850356001600160401b038111156140d4575f5ffd5b8901601f81018b136140e4575f5ffd5b80356001600160401b038111156140f9575f5ffd5b8b602082840101111561410a575f5ffd5b6020919091019750955060808901356001600160401b0381111561412c575f5ffd5b6141388b828c01613fe5565b90965094505060a08901356001600160401b03811115614156575f5ffd5b6141628b828c01613fe5565b999c989b50969995989497949560c00135949350505050565b5f6020828403121561418b575f5ffd5b5035919050565b5f5f604083850312156141a3575f5ffd5b82356141ae81613cfc565b946020939093013593505050565b5f6001600160401b038211156141d4576141d4613eb0565b5060051b60200190565b5f82601f8301126141ed575f5ffd5b81356142006141fb826141bc565b613ec4565b8082825260208201915060208360051b860101925085831115614221575f5ffd5b602085015b8381101561424757803561423981613cfc565b835260209283019201614226565b5095945050505050565b803560ff81168114611ab7575f5ffd5b80356001600160401b0381168114611ab7575f5ffd5b5f5f5f5f5f5f60c0878903121561428c575f5ffd5b86356001600160401b038111156142a1575f5ffd5b6142ad89828a016141de565b96505060208701356001600160401b038111156142c8575f5ffd5b6142d489828a016141de565b9550506142e360408801614251565b935060608701356001600160401b038111156142fd575f5ffd5b61430989828a01613ef4565b93505061431860808801614261565b915060a08701356001600160401b03811115614332575f5ffd5b61433e89828a01613ef4565b9150509295509295509295565b5f5f6040838503121561435c575f5ffd5b823561436781613cfc565b91506020830135613dcb81613dd6565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b63ffffffff8281168282160390811115610d7157610d7161438b565b8082028115828204841417610d7157610d7161438b565b80820180821115610d7157610d7161438b565b5f602082840312156143f5575f5ffd5b5051919050565b6001600160a01b03929092168252602082015260400190565b5f60208284031215614425575f5ffd5b8151801515811461255c575f5ffd5b6020808252600990820152684e6f2061636365737360b81b604082015260600190565b6001600160a01b03841681526040602082018190528101829052818360608301375f818301606090810191909152601f909201601f1916010192915050565b6020808252818101527f4f6e6c79206f776e65722662696c6c696e6741646d696e2063616e2063616c6c604082015260600190565b63ffffffff8181168382160190811115610d7157610d7161438b565b6001600160a01b0392831681529116602082015260400190565b60ff8181168382160190811115610d7157610d7161438b565b818382375f9101908152919050565b8281526080810160608360208401379392505050565b81810381811115610d7157610d7161438b565b602080825260129082015271696e73756666696369656e742066756e647360701b604082015260600190565b8181035f83128015838313168383128216171561459d5761459d61438b565b5092915050565b60ff818116838216029081169081811461459d5761459d61438b565b81516001600160401b038111156145d9576145d9613eb0565b600160401b8111156145ed576145ed613eb0565b81548183558082101561462157825f528160205f20018282035f5b8181101561461d575f83820155600101614608565b5050505b5060208301825f5260205f205f5b838110156146545782516001600160a01b03168183015560209092019160010161462f565b505050505050565b63ffffffff8a16815288602082015263ffffffff8816604082015261012060608201525f61468e610120830189613e5b565b82810360808401526146a08189613e5b565b905060ff871660a084015282810360c08401526146bd8187613d2b565b6001600160401b03861660e085015283810361010085015290506146e18185613d2b565b9c9b505050505050505050505050565b815f5b6003811015614752575f5f5b60088110156147455761473461471a855163ffffffff1690565b63ffffffff600584901b81811b19861692909116901b1790565b602094909401939150600101614700565b50838201556001016146f4565b505f5f5b60078110156147815761477061471a845163ffffffff1690565b602093909301929150600101614756565b5080600384015550505050565b600181811c908216806147a257607f821691505b60208210810361385457634e487b7160e01b5f52602260045260245ffd5b5f826147da57634e487b7160e01b5f52601260045260245ffd5b500490565b5f63ffffffff821663ffffffff81036147fa576147fa61438b565b60010192915050565b5f61010082018a60170b835260018060a01b038a16602084015263ffffffff8916604084015261010060608401528088518083526101208501915060208a0192505f5b8181101561486757835160170b835260209384019390920191600101614846565b5050838103608085015261487b8189613d2b565b9250505061488e60a083018660170b9052565b8360c08301526138ec60e083018464ffffffffff169052565b8981526001600160a01b03891660208201526001600160401b0388166040820152610120606082018190525f9061468e90830189613e5b565b8051601781900b8114611ab7575f5ffd5b5f5f5f5f60808587031215614904575f5ffd5b845161490f81613dd6565b6020860151604087015191955093506001600160401b03811115614931575f5ffd5b8501601f81018713614941575f5ffd5b805161494f6141fb826141bc565b8082825260208201915060208360051b850101925089831115614970575f5ffd5b6020840193505b8284101561499957614988846148e0565b825260209384019390910190614977565b94506149ab92505050606086016148e0565b90509295919450925056fe416363657373436f6e74726f6c6c65644f43523241676772656761746f7220312e302e3078af32efdcad432315431e9b03d27e6cd98fb79c405fdc5af7c1714d9c0f75b3d0b1dac935d85bd54cf0a33b0d41d39f8cf53a968465fc7ea2377526b8ac712c