6101c06040523480156200001257600080fd5b5060405162004de938038062004de983398101604081905262000035916200074a565b8351602085015185916000918491908188886003620000558382620008ca565b506004620000648282620008ca565b50506001600555506001600160a01b038116620000ee5760405162461bcd60e51b815260206004820152603760248201527f54656c65706f727465725570677261646561626c653a207a65726f2074656c6560448201527f706f72746572207265676973747279206164647265737300000000000000000060648201526084015b60405180910390fd5b6001600160a01b03811660808190526040805163301fd1f560e21b8152905163c07f47d4916004808201926020929091908290030181865afa15801562000139573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200015f919062000996565b600755506200016e336200049a565b6200017981620004ec565b505060016009819055507302000000000000000000000000000000000000056001600160a01b0316634213cf786040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001d6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001fc919062000996565b60a0526040830151620002655760405162461bcd60e51b815260206004820152602a60248201527f546f6b656e52656d6f74653a207a65726f20746f6b656e20686f6d6520626c6f60448201526918dad8da185a5b88125160b21b6064820152608401620000e5565b60a051836040015103620002e25760405162461bcd60e51b815260206004820152603b60248201527f546f6b656e52656d6f74653a2063616e6e6f74206465706c6f7920746f20736160448201527f6d6520626c6f636b636861696e20617320746f6b656e20686f6d6500000000006064820152608401620000e5565b60608301516001600160a01b03166200034a5760405162461bcd60e51b8152602060048201526024808201527f546f6b656e52656d6f74653a207a65726f20746f6b656e20686f6d65206164646044820152637265737360e01b6064820152608401620000e5565b6012836080015160ff161115620003b65760405162461bcd60e51b815260206004820152602960248201527f546f6b656e52656d6f74653a20746f6b656e20686f6d6520646563696d616c73604482015268040e8dede40d0d2ced60bb1b6064820152608401620000e5565b60128160ff161115620004185760405162461bcd60e51b8152602060048201526024808201527f546f6b656e52656d6f74653a20746f6b656e20646563696d616c7320746f6f206044820152630d0d2ced60e31b6064820152608401620000e5565b604083015160c05260608301516001600160a01b031660e052610180829052600a8054831560ff19909116179055608083015160ff9081166101008190529082166101208190526200047791906200056b602090811b62000e9a17901c565b1515610160526101405250506101205160ff166101a0525062000afa9350505050565b600880546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b620004f6620005bc565b6001600160a01b0381166200055d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401620000e5565b62000568816200049a565b50565b60008060ff80851690841611818162000593576200058a8587620009c6565b60ff16620005a3565b6200059f8686620009c6565b60ff165b620005b090600a62000ae5565b96919550909350505050565b6008546001600160a01b03163314620006185760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401620000e5565b565b634e487b7160e01b600052604160045260246000fd5b60405160a081016001600160401b03811182821017156200065557620006556200061a565b60405290565b604051601f8201601f191681016001600160401b03811182821017156200068657620006866200061a565b604052919050565b80516001600160a01b0381168114620006a657600080fd5b919050565b805160ff81168114620006a657600080fd5b600082601f830112620006cf57600080fd5b81516001600160401b03811115620006eb57620006eb6200061a565b602062000701601f8301601f191682016200065b565b82815285828487010111156200071657600080fd5b60005b838110156200073657858101830151828201840152820162000719565b506000928101909101919091529392505050565b6000806000808486036101008112156200076357600080fd5b60a08112156200077257600080fd5b506200077d62000630565b62000788866200068e565b815262000798602087016200068e565b602082015260408601516040820152620007b5606087016200068e565b6060820152620007c860808701620006ab565b608082015260a08601519094506001600160401b0380821115620007eb57600080fd5b620007f988838901620006bd565b945060c08701519150808211156200081057600080fd5b506200081f87828801620006bd565b9250506200083060e08601620006ab565b905092959194509250565b600181811c908216806200085057607f821691505b6020821081036200087157634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620008c557600081815260208120601f850160051c81016020861015620008a05750805b601f850160051c820191505b81811015620008c157828155600101620008ac565b5050505b505050565b81516001600160401b03811115620008e657620008e66200061a565b620008fe81620008f784546200083b565b8462000877565b602080601f8311600181146200093657600084156200091d5750858301515b600019600386901b1c1916600185901b178555620008c1565b600085815260208120601f198616915b82811015620009675788860151825594840194600190910190840162000946565b5085821015620009865787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600060208284031215620009a957600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b60ff8281168282160390811115620009e257620009e2620009b0565b92915050565b600181815b8085111562000a2957816000190482111562000a0d5762000a0d620009b0565b8085161562000a1b57918102915b93841c9390800290620009ed565b509250929050565b60008262000a4257506001620009e2565b8162000a5157506000620009e2565b816001811462000a6a576002811462000a755762000a95565b6001915050620009e2565b60ff84111562000a895762000a89620009b0565b50506001821b620009e2565b5060208310610133831016604e8410600b841016171562000aba575081810a620009e2565b62000ac68383620009e8565b806000190482111562000add5762000add620009b0565b029392505050565b600062000af3838362000a31565b9392505050565b60805160a05160c05160e05161010051610120516101405161016051610180516101a0516141b662000c3360003960006103270152600081816104840152610a420152600081816104f001528181612be90152612c3401526000818161057701528181612bc80152612c130152600081816103710152610a920152600081816103d50152610a6701526000818161045d01528181610b4b015281816117a801528181611b5201528181611da201528181612204015281816124af0152612a9801526000818161051701528181610b250152818161125b015281816114750152818161172701528181611b2c01528181611d7c015281816121de01526124890152600081816105b1015281816120ce0152612cc90152600081816102a701528181610c2d015281816112a701526126f701526141b66000f3fe608060405234801561001057600080fd5b506004361061023d5760003560e01c806370a082311161013b578063a457c2d7116100b8578063d127dc9b1161007c578063d127dc9b146105ac578063d2cc7a70146105d3578063dd62ed3e146105db578063f2fde38b146105ee578063f3f981d81461060157600080fd5b8063a457c2d714610539578063a9059cbb1461054c578063b8a46d021461055f578063ba3f5a1214610572578063c868efaa1461059957600080fd5b80638da5cb5b116100ff5780638da5cb5b146104a657806395d89b41146104b757806397314297146104bf578063a0bdf905146104eb578063a40634ab1461051257600080fd5b806370a082311461041d578063715018a61461044657806371717c181461044e5780638788cbac146104585780638ac7dd201461047f57600080fd5b8063313ce567116101c95780635507f3d11161018d5780635507f3d1146103b35780635d16225d146103bd5780635e0208fd146103d05780635eb99514146103f7578063656900381461040a57600080fd5b8063313ce5671461032557806339509351146103595780633b97e8561461036c5780634511243e1461039357806349e3284e146103a657600080fd5b80631a7f5bec116102105780631a7f5bec146102a257806322366844146102e157806323b872dd146102f3578063254ac160146103065780632b0d8f181461031057600080fd5b806306fdde0314610242578063095ea7b31461026057806315beb59f1461028357806318160ddd1461029a575b600080fd5b61024a610614565b6040516102579190613390565b60405180910390f35b61027361026e3660046133c3565b6106a6565b6040519015158152602001610257565b61028c6105dc81565b604051908152602001610257565b60025461028c565b6102c97f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610257565b600a5461027390610100900460ff1681565b6102736103013660046133ef565b6106c0565b61028c6201c13881565b61032361031e366004613430565b6106e4565b005b7f00000000000000000000000000000000000000000000000000000000000000005b60405160ff9091168152602001610257565b6102736103673660046133c3565b6107e6565b6103477f000000000000000000000000000000000000000000000000000000000000000081565b6103236103a1366004613430565b610808565b600a546102739060ff1681565b61028c6205302081565b6103236103cb36600461344d565b610905565b6103477f000000000000000000000000000000000000000000000000000000000000000081565b61032361040536600461347f565b610913565b610323610418366004613498565b610927565b61028c61042b366004613430565b6001600160a01b031660009081526020819052604090205490565b610323610931565b61028c6205573081565b6102c97f000000000000000000000000000000000000000000000000000000000000000081565b61028c7f000000000000000000000000000000000000000000000000000000000000000081565b6008546001600160a01b03166102c9565b61024a610945565b6102736104cd366004613430565b6001600160a01b031660009081526006602052604090205460ff1690565b6102737f000000000000000000000000000000000000000000000000000000000000000081565b61028c7f000000000000000000000000000000000000000000000000000000000000000081565b6102736105473660046133c3565b610954565b61027361055a3660046133c3565b6109cf565b61032361056d3660046134d5565b6109dd565b61028c7f000000000000000000000000000000000000000000000000000000000000000081565b6103236105a73660046134ed565b610c18565b61028c7f000000000000000000000000000000000000000000000000000000000000000081565b60075461028c565b61028c6105e9366004613576565b610de2565b6103236105fc366004613430565b610e0d565b61028c61060f36600461347f565b610e83565b606060038054610623906135af565b80601f016020809104026020016040519081016040528092919081815260200182805461064f906135af565b801561069c5780601f106106715761010080835404028352916020019161069c565b820191906000526020600020905b81548152906001019060200180831161067f57829003601f168201915b5050505050905090565b6000336106b4818585610ee5565b60019150505b92915050565b6000336106ce858285611009565b6106d985858561107d565b506001949350505050565b6106ec611221565b6001600160a01b03811661071b5760405162461bcd60e51b8152600401610712906135e3565b60405180910390fd5b6001600160a01b03811660009081526006602052604090205460ff161561079a5760405162461bcd60e51b815260206004820152602d60248201527f54656c65706f727465725570677261646561626c653a2061646472657373206160448201526c1b1c9958591e481c185d5cd959609a1b6064820152608401610712565b6001600160a01b038116600081815260066020526040808220805460ff19166001179055517f933f93e57a222e6330362af8b376d0a8725b6901e9a2fb86d00f169702b28a4c9190a250565b6000336106b48185856107f98383610de2565b6108039190613647565b610ee5565b610810611221565b6001600160a01b0381166108365760405162461bcd60e51b8152600401610712906135e3565b6001600160a01b03811660009081526006602052604090205460ff166108b05760405162461bcd60e51b815260206004820152602960248201527f54656c65706f727465725570677261646561626c653a2061646472657373206e6044820152681bdd081c185d5cd95960ba1b6064820152608401610712565b6040516001600160a01b038216907f844e2f3154214672229235858fd029d1dfd543901c6d05931f0bc2480a2d72c390600090a26001600160a01b03166000908152600660205260409020805460ff19169055565b61090f8282611229565b5050565b61091b611221565b610924816112a3565b50565b61090f8282611443565b6109396114af565b6109436000611509565b565b606060048054610623906135af565b600033816109628286610de2565b9050838110156109c25760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610712565b6106d98286868403610ee5565b6000336106b481858561107d565b600a54610100900460ff1615610a355760405162461bcd60e51b815260206004820152601f60248201527f546f6b656e52656d6f74653a20616c72656164792072656769737465726564006044820152606401610712565b60408051606080820183527f0000000000000000000000000000000000000000000000000000000000000000825260ff7f0000000000000000000000000000000000000000000000000000000000000000811660208085019182527f00000000000000000000000000000000000000000000000000000000000000008316858701908152865180880188526000808252885188518186015294518616858a0152915190941683860152865180840390950185526080909201909552818501929092529192610b1390610b0990860186613430565b856020013561155b565b9050610c116040518060c001604052807f000000000000000000000000000000000000000000000000000000000000000081526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020016040518060400160405280886000016020810190610b969190613430565b6001600160a01b0316815260209081018690529082526201c1389082015260400160005b604051908082528060200260200182016040528015610be3578160200160208202803683370190505b50815260200184604051602001610bfa9190613686565b6040516020818303038152906040528152506115ad565b5050505050565b610c206116cc565b6007546001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016634c1f08ce336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa158015610c97573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cbb91906136cb565b1015610d225760405162461bcd60e51b815260206004820152603060248201527f54656c65706f727465725570677261646561626c653a20696e76616c6964205460448201526f32b632b837b93a32b91039b2b73232b960811b6064820152608401610712565b610d2b336104cd565b15610d915760405162461bcd60e51b815260206004820152603060248201527f54656c65706f727465725570677261646561626c653a2054656c65706f72746560448201526f1c881859191c995cdcc81c185d5cd95960821b6064820152608401610712565b610dd2848484848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061172592505050565b610ddc6001600555565b50505050565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b610e156114af565b6001600160a01b038116610e7a5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610712565b61092481611509565b60006005610e9283601f613647565b901c92915050565b60008060ff808516908416118181610ebe57610eb685876136e4565b60ff16610ecc565b610ec886866136e4565b60ff165b610ed790600a6137e1565b9350909150505b9250929050565b6001600160a01b038316610f475760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610712565b6001600160a01b038216610fa85760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610712565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006110158484610de2565b90506000198114610ddc57818110156110705760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610712565b610ddc8484848403610ee5565b6001600160a01b0383166110e15760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610712565b6001600160a01b0382166111435760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610712565b6001600160a01b038316600090815260208190526040902054818110156111bb5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610712565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610ddc565b6109436114af565b60016009541461124b5760405162461bcd60e51b8152600401610712906137ed565b60026009556112598261196b565b7f00000000000000000000000000000000000000000000000000000000000000008235036112905761128b8282611a59565b61129a565b61129a8282611c13565b50506001600955565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c07f47d46040518163ffffffff1660e01b8152600401602060405180830381865afa158015611303573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061132791906136cb565b600754909150818311156113975760405162461bcd60e51b815260206004820152603160248201527f54656c65706f727465725570677261646561626c653a20696e76616c6964205460448201527032b632b837b93a32b9103b32b939b4b7b760791b6064820152608401610712565b80831161140c5760405162461bcd60e51b815260206004820152603f60248201527f54656c65706f727465725570677261646561626c653a206e6f7420677265617460448201527f6572207468616e2063757272656e74206d696e696d756d2076657273696f6e006064820152608401610712565b6007839055604051839082907fa9a7ef57e41f05b4c15480842f5f0c27edfcbb553fed281f7c4068452cc1c02d90600090a3505050565b6001600954146114655760405162461bcd60e51b8152600401610712906137ed565b600260095561147382611e15565b7f00000000000000000000000000000000000000000000000000000000000000008235036114a55761128b8282612054565b61128b82826122b7565b6008546001600160a01b031633146109435760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610712565b600880546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60008160000361156d575060006106ba565b306001600160a01b0384160361159b57611589335b3084611009565b61159433308461107d565b50806106ba565b6115a6833384612589565b9392505050565b6000806115b86126f2565b6040840151602001519091501561165d576040830151516001600160a01b031661163a5760405162461bcd60e51b815260206004820152602d60248201527f54656c65706f727465725570677261646561626c653a207a65726f206665652060448201526c746f6b656e206164647265737360981b6064820152608401610712565b60408301516020810151905161165d916001600160a01b03909116908390612806565b604051630624488560e41b81526001600160a01b03821690636244885090611689908690600401613831565b6020604051808303816000875af11580156116a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115a691906136cb565b60026005540361171e5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610712565b6002600555565b7f000000000000000000000000000000000000000000000000000000000000000083146117a65760405162461bcd60e51b815260206004820152602960248201527f546f6b656e52656d6f74653a20696e76616c696420736f7572636520626c6f636044820152681ad8da185a5b88125160ba1b6064820152608401610712565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b03161461183a5760405162461bcd60e51b815260206004820152602a60248201527f546f6b656e52656d6f74653a20696e76616c6964206f726967696e2073656e646044820152696572206164647265737360b01b6064820152608401610712565b60008180602001905181019061185091906139b5565b600a54909150610100900460ff16158061186d5750600a5460ff16155b1561188257600a805461ffff19166101011790555b6001815160048111156118975761189761365a565b036118d057600081602001518060200190518101906118b69190613a44565b90506118ca816000015182602001516128eb565b50610ddc565b6002815160048111156118e5576118e561365a565b0361191457600081602001518060200190518101906119049190613a7e565b90506118ca818260800151612938565b60405162461bcd60e51b815260206004820152602160248201527f546f6b656e52656d6f74653a20696e76616c6964206d657373616765207479706044820152606560f81b6064820152608401610712565b505050565b600061197d6060830160408401613430565b6001600160a01b0316036119df5760405162461bcd60e51b815260206004820152602360248201527f546f6b656e52656d6f74653a207a65726f20726563697069656e74206164647260448201526265737360e81b6064820152608401610712565b60008160c0013511611a035760405162461bcd60e51b815260040161071290613b4e565b8035611a215760405162461bcd60e51b815260040161071290613b92565b6000611a336040830160208401613430565b6001600160a01b0316036109245760405162461bcd60e51b815260040161071290613bdd565b611a87611a6c6040840160208501613430565b60a0840135611a82610100860160e08701613430565b612a96565b6000611aac82611a9d6080860160608701613430565b85608001358660a00135612ba9565b60408051808201909152919350915060009080600181526020016040518060400160405280876040016020810190611ae49190613430565b6001600160a01b0316815260200186815250604051602001611b069190613c3a565b60405160208183030381529060405281525090506000611bc66040518060c001604052807f000000000000000000000000000000000000000000000000000000000000000081526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020016040518060400160405280896060016020810190611b9d9190613430565b6001600160a01b03168152602090810188905290825260c0890135908201526040016000610bba565b9050336001600160a01b0316817f93f19bf1ec58a15dc643b37e7e18a1c13e85e06cd11929e283154691ace9fb528787604051611c04929190613c5a565b60405180910390a35050505050565b611c3e8235611c286040850160208601613430565b611c39610100860160e08701613430565b612cc7565b6000611c5482611a9d6080860160608701613430565b60408051808201825260038152815160e0810183528735815293955091935060009260208084019282820191611c8e918a01908a01613430565b6001600160a01b03168152602001611cac6060890160408a01613430565b6001600160a01b031681526020810187905260a0880135604082015260c08801356060820152608001611ce6610100890160e08a01613430565b6001600160a01b03169052604051611d569190602001815181526020808301516001600160a01b0390811691830191909152604080840151821690830152606080840151908301526080808401519083015260a0808401519083015260c092830151169181019190915260e00190565b60405160208183030381529060405281525090506000611bc66040518060c001604052807f000000000000000000000000000000000000000000000000000000000000000081526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020016040518060400160405280896060016020810190611ded9190613430565b6001600160a01b03168152602090810188905290825262053020908201526040016000610bba565b8035611e335760405162461bcd60e51b815260040161071290613b92565b6000611e456040830160208401613430565b6001600160a01b031603611e6b5760405162461bcd60e51b815260040161071290613bdd565b6000611e7d6060830160408401613430565b6001600160a01b031603611ee85760405162461bcd60e51b815260206004820152602c60248201527f546f6b656e52656d6f74653a207a65726f20726563697069656e7420636f6e7460448201526b72616374206164647265737360a01b6064820152608401610712565b6000816080013511611f0c5760405162461bcd60e51b815260040161071290613b4e565b60008160a0013511611f6e5760405162461bcd60e51b815260206004820152602560248201527f546f6b656e52656d6f74653a207a65726f20726563697069656e7420676173206044820152641b1a5b5a5d60da1b6064820152608401610712565b80608001358160a0013510611fd65760405162461bcd60e51b815260206004820152602860248201527f546f6b656e52656d6f74653a20696e76616c696420726563697069656e742067604482015267185cc81b1a5b5a5d60c21b6064820152608401610712565b6000611fe9610100830160e08401613430565b6001600160a01b0316036109245760405162461bcd60e51b815260206004820152602c60248201527f546f6b656e52656d6f74653a207a65726f2066616c6c6261636b20726563697060448201526b69656e74206164647265737360a01b6064820152608401610712565b61207d6120676040840160208501613430565b610140840135611a8260e0860160c08701613430565b60006120a68261209561012086016101008701613430565b856101200135866101400135612ba9565b60408051808201909152919350915060009080600281526020016040518061010001604052807f00000000000000000000000000000000000000000000000000000000000000008152602001306001600160a01b031681526020016121083390565b6001600160a01b031681526020016121266060890160408a01613430565b6001600160a01b03168152602081018790526040016121486060890189613cf9565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050509082525060a0880135602082015260400161219d610100890160e08a01613430565b6001600160a01b031690526040516121b89190602001613d40565b604051602081830303815290604052815250905060006122796040518060c001604052807f000000000000000000000000000000000000000000000000000000000000000081526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020016040518060400160405280896101000160208101906122509190613430565b6001600160a01b0316815260209081018890529082526080890135908201526040016000610bba565b9050336001600160a01b0316817f5d76dff81bf773b908b050fa113d39f7d8135bb4175398f313ea19cd3a1a0b168787604051611c04929190613e4e565b6122dc82356122cc6040850160208601613430565b611c3960e0860160c08701613430565b60006122f48261209561012086016101008701613430565b60408051808201909152919350915060009080600481526020016040518061016001604052806123213390565b6001600160a01b031681526020018760000135815260200187602001602081019061234c9190613430565b6001600160a01b0316815260200161236a6060890160408a01613430565b6001600160a01b031681526020810187905260400161238c6060890189613cf9565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050509082525060a088013560208201526040016123e1610100890160e08a01613430565b6001600160a01b031681526080880135602082015260400161240960e0890160c08a01613430565b6001600160a01b0316815261014088013560209182015260405161242e929101613f5d565b60408051601f198184030181529190529052905060006105dc61245e6124576060880188613cf9565b9050610e83565b612468919061403b565b6124759062055730613647565b9050600061253b6040518060c001604052807f000000000000000000000000000000000000000000000000000000000000000081526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316815260200160405180604001604052808a6101000160208101906124fb9190613430565b6001600160a01b031681526020908101899052908252818101869052604080516000815280830182528184015251606090920191610bfa91889101613686565b9050336001600160a01b0316817f5d76dff81bf773b908b050fa113d39f7d8135bb4175398f313ea19cd3a1a0b168888604051612579929190613e4e565b60405180910390a3505050505050565b6040516370a0823160e01b815230600482015260009081906001600160a01b038616906370a0823190602401602060405180830381865afa1580156125d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125f691906136cb565b905061260d6001600160a01b038616853086612d78565b6040516370a0823160e01b81523060048201526000906001600160a01b038716906370a0823190602401602060405180830381865afa158015612654573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061267891906136cb565b90508181116126de5760405162461bcd60e51b815260206004820152602c60248201527f5361666545524332305472616e7366657246726f6d3a2062616c616e6365206e60448201526b1bdd081a5b98dc99585cd95960a21b6064820152608401610712565b6126e88282614052565b9695505050505050565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d820e64f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612753573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127779190614065565b905061279b816001600160a01b031660009081526006602052604090205460ff1690565b156128015760405162461bcd60e51b815260206004820152603060248201527f54656c65706f727465725570677261646561626c653a2054656c65706f72746560448201526f1c881cd95b991a5b99c81c185d5cd95960821b6064820152608401610712565b919050565b604051636eb1769f60e11b81523060048201526001600160a01b038381166024830152600091839186169063dd62ed3e90604401602060405180830381865afa158015612857573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061287b91906136cb565b6128859190613647565b6040516001600160a01b038516602482015260448101829052909150610ddc90859063095ea7b360e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152612db0565b816001600160a01b03167f6352c5382c4a4578e712449ca65e83cdb392d045dfcf1cad9615189db2da244b8260405161292691815260200190565b60405180910390a261090f8282612e82565b6129423082612e82565b61295130836060015183610ee5565b600082600001518360200151846040015130858760a0015160405160240161297e96959493929190614082565b60408051601f198184030181529190526020810180516001600160e01b03166394395edd60e01b17905260c084015160608501519192506000916129c3919084612f41565b905060006129d5308660600151610de2565b90506129e73086606001516000610ee5565b8115612a395784606001516001600160a01b03167f104deb555f67e63782bb817bc26c39050894645f9b9f29c4be8ae68d0e8b7ff485604051612a2c91815260200190565b60405180910390a2612a81565b84606001516001600160a01b03167fb9eaeae386d339f8115782f297a9e5f0e13fb587cd6b0d502f113cb8dd4d6cb085604051612a7891815260200190565b60405180910390a25b8015610c1157610c11308660e001518361107d565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b031614612ae75760405162461bcd60e51b8152600401610712906140c3565b8115612b415760405162461bcd60e51b815260206004820152602360248201527f546f6b656e52656d6f74653a206e6f6e2d7a65726f207365636f6e646172792060448201526266656560e81b6064820152608401610712565b6001600160a01b038116156119665760405162461bcd60e51b815260206004820152602860248201527f546f6b656e52656d6f74653a206e6f6e2d7a65726f206d756c74692d686f702060448201526766616c6c6261636b60c01b6064820152608401610712565b600080612bb6858561155b565b9350612bc186612f58565b9550612c0e7f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000085612f71565b612c597f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000089612f71565b11612cbb5760405162461bcd60e51b815260206004820152602c60248201527f546f6b656e52656d6f74653a20696e73756666696369656e7420746f6b656e7360448201526b103a37903a3930b739b332b960a11b6064820152608401610712565b50939491935090915050565b7f00000000000000000000000000000000000000000000000000000000000000008303612d1657306001600160a01b03831603612d165760405162461bcd60e51b8152600401610712906140c3565b6001600160a01b0381166119665760405162461bcd60e51b8152602060048201526024808201527f546f6b656e52656d6f74653a207a65726f206d756c74692d686f702066616c6c6044820152636261636b60e01b6064820152608401610712565b6040516001600160a01b0380851660248301528316604482015260648101829052610ddc9085906323b872dd60e01b906084016128b4565b6000612e05826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316612f809092919063ffffffff16565b8051909150156119665780806020019051810190612e239190614120565b6119665760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610712565b6001600160a01b038216612ed85760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610712565b8060026000828254612eea9190613647565b90915550506001600160a01b038216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b6000612f508460008585612f8f565b949350505050565b6000612f6333611582565b612f6d3383613064565b5090565b6000612f508484846000613196565b6060612f5084846000856131c7565b6000845a1015612fe15760405162461bcd60e51b815260206004820152601b60248201527f43616c6c5574696c733a20696e73756666696369656e742067617300000000006044820152606401610712565b834710156130315760405162461bcd60e51b815260206004820152601d60248201527f43616c6c5574696c733a20696e73756666696369656e742076616c75650000006044820152606401610712565b826001600160a01b03163b60000361304b57506000612f50565b600080600084516020860188888bf19695505050505050565b6001600160a01b0382166130c45760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610712565b6001600160a01b038216600090815260208190526040902054818110156131385760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610712565b6001600160a01b0383166000818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b6000811515841515036131b4576131ad858461403b565b9050612f50565b6131be8584614142565b95945050505050565b6060824710156132285760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610712565b600080866001600160a01b031685876040516132449190614164565b60006040518083038185875af1925050503d8060008114613281576040519150601f19603f3d011682016040523d82523d6000602084013e613286565b606091505b5091509150613297878383876132a2565b979650505050505050565b6060831561331157825160000361330a576001600160a01b0385163b61330a5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610712565b5081612f50565b612f5083838151156133265781518083602001fd5b8060405162461bcd60e51b81526004016107129190613390565b60005b8381101561335b578181015183820152602001613343565b50506000910152565b6000815180845261337c816020860160208601613340565b601f01601f19169290920160200192915050565b6020815260006115a66020830184613364565b6001600160a01b038116811461092457600080fd5b8035612801816133a3565b600080604083850312156133d657600080fd5b82356133e1816133a3565b946020939093013593505050565b60008060006060848603121561340457600080fd5b833561340f816133a3565b9250602084013561341f816133a3565b929592945050506040919091013590565b60006020828403121561344257600080fd5b81356115a6816133a3565b60008082840361012081121561346257600080fd5b6101008082121561347257600080fd5b9395938601359450505050565b60006020828403121561349157600080fd5b5035919050565b600080604083850312156134ab57600080fd5b823567ffffffffffffffff8111156134c257600080fd5b830161016081860312156133e157600080fd5b6000604082840312156134e757600080fd5b50919050565b6000806000806060858703121561350357600080fd5b843593506020850135613515816133a3565b9250604085013567ffffffffffffffff8082111561353257600080fd5b818701915087601f83011261354657600080fd5b81358181111561355557600080fd5b88602082850101111561356757600080fd5b95989497505060200194505050565b6000806040838503121561358957600080fd5b8235613594816133a3565b915060208301356135a4816133a3565b809150509250929050565b600181811c908216806135c357607f821691505b6020821081036134e757634e487b7160e01b600052602260045260246000fd5b6020808252602e908201527f54656c65706f727465725570677261646561626c653a207a65726f2054656c6560408201526d706f72746572206164647265737360901b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b808201808211156106ba576106ba613631565b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6020815260008251600581106136ac57634e487b7160e01b600052602160045260246000fd5b806020840152506020830151604080840152612f506060840182613364565b6000602082840312156136dd57600080fd5b5051919050565b60ff82811682821603908111156106ba576106ba613631565b600181815b8085111561373857816000190482111561371e5761371e613631565b8085161561372b57918102915b93841c9390800290613702565b509250929050565b60008261374f575060016106ba565b8161375c575060006106ba565b8160018114613772576002811461377c57613798565b60019150506106ba565b60ff84111561378d5761378d613631565b50506001821b6106ba565b5060208310610133831016604e8410600b84101617156137bb575081810a6106ba565b6137c583836136fd565b80600019048211156137d9576137d9613631565b029392505050565b60006115a68383613740565b60208082526024908201527f53656e645265656e7472616e637947756172643a2073656e64207265656e7472604082015263616e637960e01b606082015260800190565b6020808252825182820152828101516001600160a01b039081166040808501919091528401518051821660608501528083015160808501526000929161010085019190606087015160a0870152608087015160e060c0880152805193849052840192600092506101208701905b808410156138c05784518316825293850193600193909301929085019061389e565b5060a0880151878203601f190160e089015294506138de8186613364565b98975050505050505050565b6040805190810167ffffffffffffffff8111828210171561390d5761390d613670565b60405290565b604051610100810167ffffffffffffffff8111828210171561390d5761390d613670565b600082601f83011261394857600080fd5b815167ffffffffffffffff8082111561396357613963613670565b604051601f8301601f19908116603f0116810190828211818310171561398b5761398b613670565b816040528381528660208588010111156139a457600080fd5b6126e8846020830160208901613340565b6000602082840312156139c757600080fd5b815167ffffffffffffffff808211156139df57600080fd5b90830190604082860312156139f357600080fd5b6139fb6138ea565b825160058110613a0a57600080fd5b8152602083015182811115613a1e57600080fd5b613a2a87828601613937565b60208301525095945050505050565b8051612801816133a3565b600060408284031215613a5657600080fd5b613a5e6138ea565b8251613a69816133a3565b81526020928301519281019290925250919050565b600060208284031215613a9057600080fd5b815167ffffffffffffffff80821115613aa857600080fd5b908301906101008286031215613abd57600080fd5b613ac5613913565b82518152613ad560208401613a39565b6020820152613ae660408401613a39565b6040820152613af760608401613a39565b60608201526080830151608082015260a083015182811115613b1857600080fd5b613b2487828601613937565b60a08301525060c083015160c0820152613b4060e08401613a39565b60e082015295945050505050565b60208082526024908201527f546f6b656e52656d6f74653a207a65726f20726571756972656420676173206c6040820152631a5b5a5d60e21b606082015260800190565b6020808252602b908201527f546f6b656e52656d6f74653a207a65726f2064657374696e6174696f6e20626c60408201526a1bd8dad8da185a5b88125160aa1b606082015260800190565b60208082526037908201527f546f6b656e52656d6f74653a207a65726f2064657374696e6174696f6e20746f60408201527f6b656e207472616e736665727265722061646472657373000000000000000000606082015260800190565b81516001600160a01b0316815260208083015190820152604081016106ba565b8235815261012081016020840135613c71816133a3565b6001600160a01b039081166020840152604085013590613c90826133a3565b166040830152613ca2606085016133b8565b6001600160a01b0381166060840152506080840135608083015260a084013560a083015260c084013560c0830152613cdc60e085016133b8565b6001600160a01b031660e083015261010090910191909152919050565b6000808335601e19843603018112613d1057600080fd5b83018035915067ffffffffffffffff821115613d2b57600080fd5b602001915036819003821315610ede57600080fd5b60208152815160208201526000602083015160018060a01b03808216604085015280604086015116606085015250506060830151613d8960808401826001600160a01b03169052565b50608083015160a083015260a08301516101008060c0850152613db0610120850183613364565b915060c085015160e085015260e0850151613dd5828601826001600160a01b03169052565b5090949350505050565b6000808335601e19843603018112613df657600080fd5b830160208101925035905067ffffffffffffffff811115613e1657600080fd5b803603821315610ede57600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60408152823560408201526000613e67602085016133b8565b6001600160a01b03166060830152613e81604085016133b8565b6001600160a01b03166080830152613e9c6060850185613ddf565b6101608060a0860152613eb46101a086018385613e25565b9250608087013560c086015260a087013560e0860152613ed660c088016133b8565b9150610100613eef818701846001600160a01b03169052565b613efb60e089016133b8565b9250610120613f14818801856001600160a01b03169052565b613f1f828a016133b8565b93506101409150613f3a828801856001600160a01b03169052565b880135918601919091529095013561018084015260209092019290925292915050565b60208152613f776020820183516001600160a01b03169052565b6020820151604082015260006040830151613f9d60608401826001600160a01b03169052565b5060608301516001600160a01b038116608084015250608083015160a083015260a08301516101608060c0850152613fd9610180850183613364565b915060c085015160e085015260e0850151610100614001818701836001600160a01b03169052565b86015161012086810191909152860151905061014061402a818701836001600160a01b03169052565b959095015193019290925250919050565b80820281158282048414176106ba576106ba613631565b818103818111156106ba576106ba613631565b60006020828403121561407757600080fd5b81516115a6816133a3565b8681526001600160a01b0386811660208301528581166040830152841660608201526080810183905260c060a082018190526000906138de90830184613364565b6020808252603a908201527f546f6b656e52656d6f74653a20696e76616c69642064657374696e6174696f6e60408201527f20746f6b656e207472616e736665727265722061646472657373000000000000606082015260800190565b60006020828403121561413257600080fd5b815180151581146115a657600080fd5b60008261415f57634e487b7160e01b600052601260045260246000fd5b500490565b60008251614176818460208701613340565b919091019291505056fea264697066735822122065f1655be2605dacc1feaebfda43308e2fc51ce0e69f22acc926b30a846eef6364736f6c63430008120033000000000000000000000000f86cb19ad8405aefa7d09c778215d2cb6ebfb22800000000000000000000000094cda0ef777b545c484609483ff42a5cd506e1ed3ee0f1383f8ca975a97a5347d17121c2949fd1893bd34519216ece14f5d481b8000000000000000000000000968008c3c9095fed6174d0a35474c6ff0078c4b90000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000000b51524a20546f6b656e2032000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000551524a5432000000000000000000000000000000000000000000000000000000