60806040526000600e553480156200001657600080fd5b50604080516020810190915260008152620000318162000055565b506200003d3362000067565b600480546001600160a01b031916331790556200022a565b60026200006382826200015e565b5050565b600380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620000e457607f821691505b6020821081036200010557634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200015957600081815260208120601f850160051c81016020861015620001345750805b601f850160051c820191505b81811015620001555782815560010162000140565b5050505b505050565b81516001600160401b038111156200017a576200017a620000b9565b62000192816200018b8454620000cf565b846200010b565b602080601f831160018114620001ca5760008415620001b15750858301515b600019600386901b1c1916600185901b17855562000155565b600085815260208120601f198616915b82811015620001fb57888601518255948401946001909101908401620001da565b50858210156200021a5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b613a81806200023a6000396000f3fe608060405234801561001057600080fd5b50600436106102915760003560e01c806380d5b40111610160578063ae7dddda116100d8578063ee7a7c041161008c578063f2bd93ae11610071578063f2bd93ae14610591578063f2fde38b146105a4578063f356c17b146105b757600080fd5b8063ee7a7c041461056b578063f242432a1461057e57600080fd5b8063cde1d4d7116100bd578063cde1d4d714610509578063e32954eb1461051c578063e985e9c51461052f57600080fd5b8063ae7dddda146104f8578063cc78ed5f1461050157600080fd5b8063a20877901161012f578063a73f7f8a11610114578063a73f7f8a146104bf578063ac9650d8146104d2578063ad11e745146104e557600080fd5b8063a208779014610499578063a22cb465146104ac57600080fd5b806380d5b401146104545780638da5cb5b14610467578063980337ea14610478578063a0ac59791461048b57600080fd5b806335edaeca1161020e578063528c198a116101c25780636badcb47116101a75780636badcb4714610419578063715018a61461043957806374f06c431461044157600080fd5b8063528c198a146103db5780635462870d146103ee57600080fd5b8063381b4a14116101f3578063381b4a141461039f5780634e1273f4146103a85780634ec35fd7146103c857600080fd5b806335edaeca14610379578063363bf9641461038c57600080fd5b80631603fb6211610265578063208dd1ff1161024a578063208dd1ff1461033f57806324a242c3146103525780632eb2c2d61461036657600080fd5b80631603fb62146103145780631a023a4a1461033757600080fd5b8062fdd58e1461029657806301ffc9a7146102bc5780630b1ca49a146102df5780630e89341c146102f4575b600080fd5b6102a96102a4366004612b38565b6105e5565b6040519081526020015b60405180910390f35b6102cf6102ca366004612b7a565b610691565b60405190151581526020016102b3565b6102f26102ed366004612b97565b61069c565b005b610307610302366004612bb4565b6107c6565b6040516102b39190612c1d565b6102cf610322366004612b97565b600c6020526000908152604090205460ff1681565b61030761085a565b6102f261034d366004612b38565b6108e8565b6102cf610360366004612b97565b50600190565b6102f2610374366004612d8c565b610a86565b6102f2610387366004612e3a565b610b28565b6102f261039a366004612e8a565b610ca5565b6102a9600d5481565b6103bb6103b6366004612ed5565b610d8e565b6040516102b39190612fd3565b6102f26103d6366004612fe6565b610ecc565b6102f26103e9366004612b38565b610ee0565b600554610401906001600160a01b031681565b6040516001600160a01b0390911681526020016102b3565b61042c610427366004613067565b610fb3565b6040516102b391906130bc565b6102f2610fca565b6102f261044f36600461311e565b610fde565b610307610462366004612b97565b6110d7565b6003546001600160a01b0316610401565b600654610401906001600160a01b031681565b6102a9610360366004612b97565b6102f26104a7366004612b38565b6110f0565b6102f26104ba3660046131a2565b61135f565b6102f26104cd366004612b38565b61136a565b61042c6104e03660046131db565b6114c6565b6102a96104f3366004612b97565b6114db565b6102a9600e5481565b6102a9600081565b600454610401906001600160a01b031681565b61042c61052a36600461321d565b6115b7565b6102cf61053d366004613250565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205460ff1690565b6102f2610579366004612b38565b6115c4565b6102f261058c36600461327e565b6116e9565b61042c61059f3660046132e7565b611784565b6102f26105b2366004612b97565b611943565b6102cf6105c5366004612b38565b600a60209081526000928352604080842090915290825290205460ff1681565b60006001600160a01b0383166106685760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a2061646472657373207a65726f206973206e6f742061207660448201527f616c6964206f776e65720000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b506000818152602081815260408083206001600160a01b03861684529091529020545b92915050565b600061068b826119d3565b6106a4611a6e565b6001600160a01b038116600090815260096020526040812080546106c790613361565b80601f01602080910402602001604051908101604052809291908181526020018280546106f390613361565b80156107405780601f1061071557610100808354040283529160200191610740565b820191906000526020600020905b81548152906001019060200180831161072357829003601f168201915b5050505050905060006020825161075791906133b1565b905060005b8181101561078a5760208181028401015161077785826108e8565b5080610782816133d3565b91505061075c565b506001600d600082825461079e91906133ec565b909155505050506001600160a01b03166000908152600c60205260409020805460ff19169055565b6060600280546107d590613361565b80601f016020809104026020016040519081016040528092919081815260200182805461080190613361565b801561084e5780601f106108235761010080835404028352916020019161084e565b820191906000526020600020905b81548152906001019060200180831161083157829003601f168201915b50505050509050919050565b6007805461086790613361565b80601f016020809104026020016040519081016040528092919081815260200182805461089390613361565b80156108e05780601f106108b5576101008083540402835291602001916108e0565b820191906000526020600020905b8154815290600101906020018083116108c357829003601f168201915b505050505081565b6108f0611a6e565b6001600160a01b0382166000908152600a6020908152604080832084845290915290205460ff161515600103610a82576001600160a01b0382166000818152600a602090815260408083208584528252808320805460ff1916905592825260099052908120805461096090613361565b80601f016020809104026020016040519081016040528092919081815260200182805461098c90613361565b80156109d95780601f106109ae576101008083540402835291602001916109d9565b820191906000526020600020905b8154815290600101906020018083116109bc57829003601f168201915b505050505090506000602082516109f091906133b1565b905060606000805b83811015610a5257602081810286010151868103610a1a576001925050610a40565b8381604051602001610a2d9291906133ff565b6040516020818303038152906040529350505b80610a4a816133d3565b9150506109f8565b508015610a7d576001600160a01b0386166000908152600960205260409020610a7b8382613467565b505b505050505b5050565b6001600160a01b038516331480610aa25750610aa2853361053d565b610b145760405162461bcd60e51b815260206004820152602e60248201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60448201527f6572206f7220617070726f766564000000000000000000000000000000000000606482015260840161065f565b610b218585858585611ac8565b5050505050565b610b30611a6e565b6000805b6005811015610c9f57610b48816001613527565b60208451610b5691906133b1565b10610c8d576006546040517f286fe13c0000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063286fe13c90610ba6908690859060040161353a565b602060405180830381865afa158015610bc3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610be7919061355c565b6008546040517f76f0b157000000000000000000000000000000000000000000000000000000008152600481018390526000602482018190529294506001600160a01b03909116906376f0b15790604401602060405180830381865afa158015610c55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c799190613575565b90508015610c8b57610c8b858461136a565b505b80610c97816133d3565b915050610b34565b50505050565b6005546001600160a01b031615610d36576004546001600160a01b03163314610d365760405162461bcd60e51b815260206004820152603260248201527f43616e206f6e6c792073657420746865206d756c74697369672061646472657360448201527f732066726f6d2074686520666163746f72790000000000000000000000000000606482015260840161065f565b600580546001600160a01b0380861673ffffffffffffffffffffffffffffffffffffffff1992831617909255600680548484169083161790556008805492851692909116919091179055610d8983611d4f565b505050565b60608151835114610e075760405162461bcd60e51b815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e67746860448201527f206d69736d617463680000000000000000000000000000000000000000000000606482015260840161065f565b6000835167ffffffffffffffff811115610e2357610e23612c30565b604051908082528060200260200182016040528015610e4c578160200160208202803683370190505b50905060005b8451811015610ec457610e97858281518110610e7057610e70613592565b6020026020010151858381518110610e8a57610e8a613592565b60200260200101516105e5565b828281518110610ea957610ea9613592565b6020908102919091010152610ebd816133d3565b9050610e52565b509392505050565b610ed4611a6e565b6007610a828282613467565b610ee8611a6e565b8015610a8257600854604080516303ce78cb60e51b815290516000926001600160a01b0316916379cf19609160048083019260209291908290030181865afa158015610f38573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f5c919061355c565b9050610f7a8360008460405180602001604052806000815250611dae565b6001600160a01b0383166000908152600a6020908152604080832084845290915281205460ff1615159003610d8957610d89838261136a565b6060610fc26000858585611ef3565b949350505050565b610fd2611a6e565b610fdc6000611d4f565b565b6005546001600160a01b0316331461105e5760405162461bcd60e51b815260206004820152602560248201527f54686973206973206f6e6c792063616c6c61626c6520627920746865206d756c60448201527f7469736967000000000000000000000000000000000000000000000000000000606482015260840161065f565b6005546040517f744c7dc60000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063744c7dc6906110a990859085906004016135a8565b600060405180830381600087803b1580156110c357600080fd5b505af1158015610a7b573d6000803e3d6000fd5b6009602052600090815260409020805461086790613361565b6110f8611a6e565b6005546001600160a01b031633146111785760405162461bcd60e51b815260206004820152603960248201527f696e697469616c697a654d656d626572206d7573742062652063616c6c65642060448201527f7468726f756768206d756c746973696720636f6e747261637400000000000000606482015260840161065f565b60006007805461118790613361565b80601f01602080910402602001604051908101604052809291908181526020018280546111b390613361565b80156112005780601f106111d557610100808354040283529160200191611200565b820191906000526020600020905b8154815290600101906020018083116111e357829003601f168201915b50505050508060200190518101906112189190613625565b9050600080600083858151811061123157611231613592565b602002602001015180602001905181019061124c91906136e1565b6001600160a01b0389166000908152600c60209081526040808320805460ff19166001908117909155600b90925282208a9055600e80549598509396509194509092611299908490613527565b90915550506001600160a01b03868116908416146113455760405162461bcd60e51b815260206004820152604560248201527f4f6e6c7920746865206164647265737320636f6e6e656374656420746f20746860448201527f65206d656d6265722064617461206d61792063616c6c20696e697469616c697a60648201527f6174696f6e000000000000000000000000000000000000000000000000000000608482015260a40161065f565b61134f8382610b28565b8115610a7d57610a7d8383610ee0565b610a8233838361215a565b611372611a6e565b6001600160a01b0382166000908152600a6020908152604080832084845290915281205460ff1615159003610a82576001600160a01b0382166000818152600a602090815260408083208584528252808320805460ff19166001179055928252600981529082902091516113e99291849101613731565b60408051601f198184030181529181526001600160a01b0384166000908152600960205220906114199082613467565b506001600160a01b0382166000908152600c602052604081205460ff1615159003610a82576001600d60008282546114519190613527565b90915550506001600160a01b0382166000908152600c60205260408120805460ff19166001179055611482836114db565b9050600e54811115610d8957600e80546001600160a01b0385166000908152600b60205260408120829055600192916114bc908490613527565b9091555050505050565b60606114d46000848461224e565b9392505050565b6001600160a01b0381166000908152600b60205260408120541561151557506001600160a01b03166000908152600b602052604090205490565b6001600160a01b0382166000908152600b602052604090205415801561155357506001600160a01b0382166000908152600c602052604090205460ff165b1561156057506000919050565b6001600160a01b0382166000908152600b602052604090205415801561159f57506001600160a01b0382166000908152600c602052604090205460ff16155b156115b257600e5461068b906001613527565b919050565b6060610fc284848461224e565b6115cc611a6e565b6115d8826000836124a3565b6115e38260006105e5565b600003610a8257600854604080516303ce78cb60e51b815290516000926001600160a01b0316916379cf19609160048083019260209291908290030181865afa158015611634573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611658919061355c565b90506000600860009054906101000a90046001600160a01b03166001600160a01b0316638ad682af6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156116af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116d3919061355c565b90506116df84836108e8565b610c9f84826108e8565b6001600160a01b0385163314806117055750611705853361053d565b6117775760405162461bcd60e51b815260206004820152602e60248201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60448201527f6572206f7220617070726f766564000000000000000000000000000000000000606482015260840161065f565b610b218585858585612670565b60608167ffffffffffffffff81111561179f5761179f612c30565b6040519080825280602002602001820160405280156117d257816020015b60608152602001906001900390816117bd5790505b50905060005b828110156119395760008686838181106117f4576117f4613592565b90506020020160208101906118099190612b7a565b90506000818987878681811061182157611821613592565b905060200281019061183391906137ac565b60405160200161184694939291906137f3565b6040516020818303038152906040529050600080306001600160a01b031683604051611872919061381e565b600060405180830381855af49150503d80600081146118ad576040519150601f19603f3d011682016040523d82523d6000602084013e6118b2565b606091505b5091509150816119045760405162461bcd60e51b815260206004820152601460248201527f44656c65676174652063616c6c206661696c6564000000000000000000000000604482015260640161065f565b8086868151811061191757611917613592565b6020026020010181905250505050508080611931906133d3565b9150506117d8565b5095945050505050565b61194b611a6e565b6001600160a01b0381166119c75760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161065f565b6119d081611d4f565b50565b60006001600160e01b031982167fd9b67a26000000000000000000000000000000000000000000000000000000001480611a3657506001600160e01b031982167f0e89341c00000000000000000000000000000000000000000000000000000000145b8061068b57507f01ffc9a7000000000000000000000000000000000000000000000000000000006001600160e01b031983161461068b565b6003546001600160a01b03163314610fdc5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161065f565b8151835114611b3f5760405162461bcd60e51b815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e6774682060448201527f6d69736d61746368000000000000000000000000000000000000000000000000606482015260840161065f565b6001600160a01b038416611ba35760405162461bcd60e51b815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604482015264647265737360d81b606482015260840161065f565b33611bb2818787878787610a7d565b60005b8451811015611cdb576000858281518110611bd257611bd2613592565b602002602001015190506000858381518110611bf057611bf0613592565b602090810291909101810151600084815280835260408082206001600160a01b038e168352909352919091205490915081811015611c835760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60448201526939103a3930b739b332b960b11b606482015260840161065f565b6000838152602081815260408083206001600160a01b038e8116855292528083208585039055908b16825281208054849290611cc0908490613527565b9250508190555050505080611cd4906133d3565b9050611bb5565b50846001600160a01b0316866001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051611d2b92919061383a565b60405180910390a4611d41818787878787610a7d565b610a7d818787878787612837565b600380546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038416611e2a5760405162461bcd60e51b815260206004820152602160248201527f455243313135353a206d696e7420746f20746865207a65726f2061646472657360448201527f7300000000000000000000000000000000000000000000000000000000000000606482015260840161065f565b336000611e36856129dc565b90506000611e43856129dc565b9050611e5483600089858589610a7d565b6000868152602081815260408083206001600160a01b038b16845290915281208054879290611e84908490613527565b909155505060408051878152602081018790526001600160a01b03808a1692600092918716917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a4611ee483600089858589610a7d565b610a7b83600089898989612a27565b60608167ffffffffffffffff811115611f0e57611f0e612c30565b604051908082528060200260200182016040528015611f4157816020015b6060815260200190600190039081611f2c5790505b50905060005b8281101561215157851561200c576000848483818110611f6957611f69613592565b9050602002810190611f7b91906137ac565b611f8a9160249160049161385f565b611f9391613889565b905086811461200a5760405162461bcd60e51b815260206004820152603460248201527f6d756c746963616c6c3a20416c6c207265636f726473206d757374206861766560448201527f2061206d61746368696e67206e616d6568617368000000000000000000000000606482015260840161065f565b505b600084848381811061202057612020613592565b905060200281019061203291906137ac565b6120419160049160009161385f565b61204a916138a7565b9050600080876001600160a01b031687878681811061206b5761206b613592565b905060200281019061207d91906137ac565b60405161208b9291906138d7565b600060405180830381855afa9150503d80600081146120c6576040519150601f19603f3d011682016040523d82523d6000602084013e6120cb565b606091505b50915091508161211d5760405162461bcd60e51b815260206004820152601460248201527f44656c65676174652063616c6c206661696c6564000000000000000000000000604482015260640161065f565b8085858151811061213057612130613592565b60200260200101819052505050508080612149906133d3565b915050611f47565b50949350505050565b816001600160a01b0316836001600160a01b0316036121e15760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c2073746174757360448201527f20666f722073656c660000000000000000000000000000000000000000000000606482015260840161065f565b6001600160a01b03838116600081815260016020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b60608167ffffffffffffffff81111561226957612269612c30565b60405190808252806020026020018201604052801561229c57816020015b60608152602001906001900390816122875790505b50905060005b82811015610ec45784156123675760008484838181106122c4576122c4613592565b90506020028101906122d691906137ac565b6122e59160249160049161385f565b6122ee91613889565b90508581146123655760405162461bcd60e51b815260206004820152603460248201527f6d756c746963616c6c3a20416c6c207265636f726473206d757374206861766560448201527f2061206d61746368696e67206e616d6568617368000000000000000000000000606482015260840161065f565b505b600084848381811061237b5761237b613592565b905060200281019061238d91906137ac565b61239c9160049160009161385f565b6123a5916138a7565b9050600080308787868181106123bd576123bd613592565b90506020028101906123cf91906137ac565b6040516123dd9291906138d7565b600060405180830381855af49150503d8060008114612418576040519150601f19603f3d011682016040523d82523d6000602084013e61241d565b606091505b50915091508161246f5760405162461bcd60e51b815260206004820152601460248201527f44656c65676174652063616c6c206661696c6564000000000000000000000000604482015260640161065f565b8085858151811061248257612482613592565b6020026020010181905250505050808061249b906133d3565b9150506122a2565b6001600160a01b03831661251f5760405162461bcd60e51b815260206004820152602360248201527f455243313135353a206275726e2066726f6d20746865207a65726f206164647260448201527f6573730000000000000000000000000000000000000000000000000000000000606482015260840161065f565b33600061252b846129dc565b90506000612538846129dc565b905061255883876000858560405180602001604052806000815250610a7d565b6000858152602081815260408083206001600160a01b038a168452909152902054848110156125ee5760405162461bcd60e51b8152602060048201526024808201527f455243313135353a206275726e20616d6f756e7420657863656564732062616c60448201527f616e636500000000000000000000000000000000000000000000000000000000606482015260840161065f565b6000868152602081815260408083206001600160a01b038b81168086529184528285208a8703905582518b81529384018a90529092908816917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a4610a7b84886000868660405180602001604052806000815250610a7d565b6001600160a01b0384166126d45760405162461bcd60e51b815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604482015264647265737360d81b606482015260840161065f565b3360006126e0856129dc565b905060006126ed856129dc565b90506126fd838989858589610a7d565b6000868152602081815260408083206001600160a01b038c168452909152902054858110156127815760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60448201526939103a3930b739b332b960b11b606482015260840161065f565b6000878152602081815260408083206001600160a01b038d8116855292528083208985039055908a168252812080548892906127be908490613527565b909155505060408051888152602081018890526001600160a01b03808b16928c821692918816917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a461281e848a8a86868a610a7d565b61282c848a8a8a8a8a612a27565b505050505050505050565b6001600160a01b0384163b15610a7d5760405163bc197c8160e01b81526001600160a01b0385169063bc197c819061287b90899089908890889088906004016138e7565b6020604051808303816000875af19250505080156128b6575060408051601f3d908101601f191682019092526128b391810190613945565b60015b61296b576128c2613962565b806308c379a0036128fb57506128d661397e565b806128e157506128fd565b8060405162461bcd60e51b815260040161065f9190612c1d565b505b60405162461bcd60e51b815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e2d4552433131353560448201527f526563656976657220696d706c656d656e746572000000000000000000000000606482015260840161065f565b6001600160e01b0319811663bc197c8160e01b14610a7b5760405162461bcd60e51b815260206004820152602860248201527f455243313135353a204552433131353552656365697665722072656a656374656044820152676420746f6b656e7360c01b606482015260840161065f565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110612a1657612a16613592565b602090810291909101015292915050565b6001600160a01b0384163b15610a7d5760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e6190612a6b9089908990889088908890600401613a08565b6020604051808303816000875af1925050508015612aa6575060408051601f3d908101601f19168201909252612aa391810190613945565b60015b612ab2576128c2613962565b6001600160e01b0319811663f23a6e6160e01b14610a7b5760405162461bcd60e51b815260206004820152602860248201527f455243313135353a204552433131353552656365697665722072656a656374656044820152676420746f6b656e7360c01b606482015260840161065f565b6001600160a01b03811681146119d057600080fd5b60008060408385031215612b4b57600080fd5b8235612b5681612b23565b946020939093013593505050565b6001600160e01b0319811681146119d057600080fd5b600060208284031215612b8c57600080fd5b81356114d481612b64565b600060208284031215612ba957600080fd5b81356114d481612b23565b600060208284031215612bc657600080fd5b5035919050565b60005b83811015612be8578181015183820152602001612bd0565b50506000910152565b60008151808452612c09816020860160208601612bcd565b601f01601f19169290920160200192915050565b6020815260006114d46020830184612bf1565b634e487b7160e01b600052604160045260246000fd5b601f8201601f1916810167ffffffffffffffff81118282101715612c6c57612c6c612c30565b6040525050565b600067ffffffffffffffff821115612c8d57612c8d612c30565b5060051b60200190565b600082601f830112612ca857600080fd5b81356020612cb582612c73565b604051612cc28282612c46565b83815260059390931b8501820192828101915086841115612ce257600080fd5b8286015b84811015612cfd5780358352918301918301612ce6565b509695505050505050565b600067ffffffffffffffff821115612d2257612d22612c30565b50601f01601f191660200190565b600082601f830112612d4157600080fd5b8135612d4c81612d08565b604051612d598282612c46565b828152856020848701011115612d6e57600080fd5b82602086016020830137600092810160200192909252509392505050565b600080600080600060a08688031215612da457600080fd5b8535612daf81612b23565b94506020860135612dbf81612b23565b9350604086013567ffffffffffffffff80821115612ddc57600080fd5b612de889838a01612c97565b94506060880135915080821115612dfe57600080fd5b612e0a89838a01612c97565b93506080880135915080821115612e2057600080fd5b50612e2d88828901612d30565b9150509295509295909350565b60008060408385031215612e4d57600080fd5b8235612e5881612b23565b9150602083013567ffffffffffffffff811115612e7457600080fd5b612e8085828601612d30565b9150509250929050565b600080600060608486031215612e9f57600080fd5b8335612eaa81612b23565b92506020840135612eba81612b23565b91506040840135612eca81612b23565b809150509250925092565b60008060408385031215612ee857600080fd5b823567ffffffffffffffff80821115612f0057600080fd5b818501915085601f830112612f1457600080fd5b81356020612f2182612c73565b604051612f2e8282612c46565b83815260059390931b8501820192828101915089841115612f4e57600080fd5b948201945b83861015612f75578535612f6681612b23565b82529482019490820190612f53565b96505086013592505080821115612f8b57600080fd5b50612e8085828601612c97565b600081518084526020808501945080840160005b83811015612fc857815187529582019590820190600101612fac565b509495945050505050565b6020815260006114d46020830184612f98565b600060208284031215612ff857600080fd5b813567ffffffffffffffff81111561300f57600080fd5b610fc284828501612d30565b60008083601f84011261302d57600080fd5b50813567ffffffffffffffff81111561304557600080fd5b6020830191508360208260051b850101111561306057600080fd5b9250929050565b60008060006040848603121561307c57600080fd5b833561308781612b23565b9250602084013567ffffffffffffffff8111156130a357600080fd5b6130af8682870161301b565b9497909650939450505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561311157603f198886030184526130ff858351612bf1565b945092850192908501906001016130e3565b5092979650505050505050565b60008060006060848603121561313357600080fd5b833561313e81612b23565b9250602084013567ffffffffffffffff8082111561315b57600080fd5b61316787838801612d30565b9350604086013591508082111561317d57600080fd5b5061318a86828701612d30565b9150509250925092565b80151581146119d057600080fd5b600080604083850312156131b557600080fd5b82356131c081612b23565b915060208301356131d081613194565b809150509250929050565b600080602083850312156131ee57600080fd5b823567ffffffffffffffff81111561320557600080fd5b6132118582860161301b565b90969095509350505050565b60008060006040848603121561323257600080fd5b83359250602084013567ffffffffffffffff8111156130a357600080fd5b6000806040838503121561326357600080fd5b823561326e81612b23565b915060208301356131d081612b23565b600080600080600060a0868803121561329657600080fd5b85356132a181612b23565b945060208601356132b181612b23565b93506040860135925060608601359150608086013567ffffffffffffffff8111156132db57600080fd5b612e2d88828901612d30565b6000806000806000606086880312156132ff57600080fd5b85359450602086013567ffffffffffffffff8082111561331e57600080fd5b61332a89838a0161301b565b9096509450604088013591508082111561334357600080fd5b506133508882890161301b565b969995985093965092949392505050565b600181811c9082168061337557607f821691505b60208210810361339557634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b6000826133ce57634e487b7160e01b600052601260045260246000fd5b500490565b6000600182016133e5576133e561339b565b5060010190565b8181038181111561068b5761068b61339b565b60008351613411818460208801612bcd565b9190910191825250602001919050565b601f821115610d8957600081815260208120601f850160051c810160208610156134485750805b601f850160051c820191505b81811015610a7d57828155600101613454565b815167ffffffffffffffff81111561348157613481612c30565b6134958161348f8454613361565b84613421565b602080601f8311600181146134ca57600084156134b25750858301515b600019600386901b1c1916600185901b178555610a7d565b600085815260208120601f198616915b828110156134f9578886015182559484019460019091019084016134da565b50858210156135175787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b8082018082111561068b5761068b61339b565b60408152600061354d6040830185612bf1565b90508260208301529392505050565b60006020828403121561356e57600080fd5b5051919050565b60006020828403121561358757600080fd5b81516114d481613194565b634e487b7160e01b600052603260045260246000fd5b6040815260006135bb6040830185612bf1565b82810360208401526135cd8185612bf1565b95945050505050565b600082601f8301126135e757600080fd5b81516135f281612d08565b6040516135ff8282612c46565b82815285602084870101111561361457600080fd5b6135cd836020830160208801612bcd565b6000602080838503121561363857600080fd5b825167ffffffffffffffff8082111561365057600080fd5b818501915085601f83011261366457600080fd5b815161366f81612c73565b60405161367c8282612c46565b82815260059290921b840185019185810191508883111561369c57600080fd5b8585015b838110156136d4578051858111156136b85760008081fd5b6136c68b89838a01016135d6565b8452509186019186016136a0565b5098975050505050505050565b6000806000606084860312156136f657600080fd5b835161370181612b23565b60208501516040860151919450925067ffffffffffffffff81111561372557600080fd5b61318a868287016135d6565b600080845461373f81613361565b60018281168015613757576001811461376c5761379b565b60ff198416875282151583028701945061379b565b8860005260208060002060005b858110156137925781548a820152908401908201613779565b50505082870194505b505050938152602001949350505050565b6000808335601e198436030181126137c357600080fd5b83018035915067ffffffffffffffff8211156137de57600080fd5b60200191503681900382131561306057600080fd5b6001600160e01b03198516815283600482015281836024830137600091016024019081529392505050565b60008251613830818460208701612bcd565b9190910192915050565b60408152600061384d6040830185612f98565b82810360208401526135cd8185612f98565b6000808585111561386f57600080fd5b8386111561387c57600080fd5b5050820193919092039150565b8035602083101561068b57600019602084900360031b1b1692915050565b6001600160e01b031981358181169160048510156138cf5780818660040360031b1b83161692505b505092915050565b8183823760009101908152919050565b60006001600160a01b03808816835280871660208401525060a0604083015261391360a0830186612f98565b82810360608401526139258186612f98565b905082810360808401526139398185612bf1565b98975050505050505050565b60006020828403121561395757600080fd5b81516114d481612b64565b600060033d111561397b5760046000803e5060005160e01c5b90565b600060443d101561398c5790565b6040516003193d81016004833e81513d67ffffffffffffffff81602484011181841117156139bc57505050505090565b82850191508151818111156139d45750505050505090565b843d87010160208285010111156139ee5750505050505090565b6139fd60208286010187612c46565b509095945050505050565b60006001600160a01b03808816835280871660208401525084604083015283606083015260a06080830152613a4060a0830184612bf1565b97965050505050505056fea26469706673582212206d0ae32ca1454a16287e29b7ff91f329546813f742a91b41e6cecae3ea17631264736f6c63430008140033