60806040525f60075534801562000014575f80fd5b5033806200003c57604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b6200004781620000c8565b50620000533362000117565b6200005d6200015a565b50620000686200017e565b604080513081526020810182905260118183015270455243313430305f4571756974795f563160781b606082015290517fdf801e5bc3905a7494c042430ec616a8ccf2c37fc5a25916a18e600eb52415719181900360800190a1620004ac565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6200012460028262000232565b6040516001600160a01b038216907f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f6905f90a250565b5f468162000167620002b1565b5f9283526003602052604090922082905550919050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620001cf5760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146200022f5780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6200023e828262000357565b156200028d5760405162461bcd60e51b815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500604482015260640162000033565b6001600160a01b03165f90815260209190915260409020805460ff19166001179055565b5f46817f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f620002df620003da565b8051602090910120620003066040805180820190915260018152603160f81b602082015290565b80516020918201206040805192830194909452928101919091526060810191909152608081018390523060a082015260c00160408051601f1981840301815291905280516020909101209392505050565b5f6001600160a01b038216620003bb5760405162461bcd60e51b815260206004820152602260248201527f526f6c65733a206163636f756e7420697320746865207a65726f206164647265604482015261737360f01b606482015260840162000033565b506001600160a01b03165f908152602091909152604090205460ff1690565b606060048054620003eb9062000472565b80601f0160208091040260200160405190810160405280929190818152602001828054620004199062000472565b8015620004685780601f106200043e5761010080835404028352916020019162000468565b820191905f5260205f20905b8154815290600101906020018083116200044a57829003601f168201915b5050505050905090565b600181811c908216806200048757607f821691505b602082108103620004a657634e487b7160e01b5f52602260045260245ffd5b50919050565b6132e880620004ba5f395ff3fe608060405234801561000f575f80fd5b50600436106103e0575f3560e01c806386fe8b431161020b578063b5bf15e51161011f578063ca281fd9116100b4578063e77c646d11610084578063e77c646d146108cb578063ee532f31146108de578063f2fde38b146108f1578063f698da2514610904578063f81094f31461090c575f80fd5b8063ca281fd914610865578063dc0eea8d1461086d578063dd62ed3e14610880578063e47d6060146108b8575f80fd5b8063c2e3273d116100ef578063c2e3273d14610819578063c5a1e9701461082c578063c630948d1461083f578063c64d0ebc14610852575f80fd5b8063b5bf15e5146107cd578063bb3acde9146107e0578063bd33810a146107f3578063bed34bba14610806575f80fd5b80639675193c116101a0578063a02619e411610170578063a02619e414610779578063a262f9531461078c578063a8082cb01461079f578063a9059cbb146107a7578063aa271e1a146107ba575f80fd5b80639675193c14610737578063983b2d561461074b578063986502751461075e5780639d2f9da114610766575f80fd5b80638f78a20e116101db5780638f78a20e146106f65780639138ed9214610709578063933964c71461071c57806395d89b411461072f575f80fd5b806386fe8b43146106b6578063895d7386146103e45780638da5cb5b146106be5780638daa6fc9146106e2575f80fd5b8063313ce56711610302578063556f0dc7116102975780636f9170f6116102675780636f9170f61461064e57806370a0823114610661578063715018a61461068957806379cc67901461069157806382940b4c146106a4575f80fd5b8063556f0dc714610616578063572c33401461061e5780636b32810b146106315780636c30d17014610646575f80fd5b806340c10f19116102d257806340c10f19146105cc57806342966c68146105df5780634c783bf5146105f25780634f5632f814610603575f80fd5b8063313ce5671461058d578063329b735314610593578063330eb932146105a65780633b0071aa146105b9575f80fd5b806318160ddd11610378578063249cb3fa11610348578063249cb3fa146105425780632535f762146105555780632f1cae85146105685780633092afd51461057a575f80fd5b806318160ddd146104e45780631b9aa7f2146104ec5780631d43e1c01461051257806323b872dd1461052f575f80fd5b80631131d0ec116103b35780631131d0ec1461044f578063114f481a1461046257806315497d2c1461047557806317d7de7c146104ab575f80fd5b806306fdde03146103e4578063095ea7b3146104025780630d1118ce146104255780630d8e6e2c1461043a575b5f80fd5b6103ec61091f565b6040516103f991906128b6565b60405180910390f35b6104156104103660046128fe565b6109af565b60405190151581526020016103f9565b6104386104333660046128fe565b610a54565b005b60015b60405160ff90911681526020016103f9565b61041561045d366004612926565b610a90565b610438610470366004612a27565b610a9c565b61049d610483366004612926565b6001600160a01b03165f9081526012602052604090205490565b6040519081526020016103f9565b60408051808201909152601981527f455243313430305f4571756974795f313731373338343839300000000000000060208201526103ec565b60075461049d565b6104fd6104fa366004612a71565b90565b60405163ffffffff90911681526020016103f9565b6040805180820190915260018152603160f81b60208201526103ec565b61041561053d366004612a88565b610b75565b61049d610550366004612ac1565b610ba8565b610438610563366004612b26565b610c05565b600b546301000000900460ff16610415565b610438610588366004612926565b610c53565b5f61043d565b6104386105a1366004612b7b565b610c84565b6104386105b4366004612b94565b610cbb565b6104386105c7366004612c70565b610db3565b6104386105da3660046128fe565b610f1d565b6104386105ed366004612a71565b610f5d565b600b5462010000900460ff16610415565b610438610611366004612926565b610f78565b60065461049d565b61043861062c366004612d2d565b610fc6565b610639611056565b6040516103f99190612d55565b610438611067565b61041561065c366004612926565b6110a6565b61049d61066f366004612926565b6001600160a01b03165f9081526010602052604090205490565b6104386110b0565b61043861069f3660046128fe565b6110c3565b60095461041590610100900460ff1681565b6106396110d4565b5f546001600160a01b03165b6040516001600160a01b0390911681526020016103f9565b6106ca6106f0366004612a71565b60601c90565b610438610704366004612a27565b6110e0565b610415610717366004612926565b6111b0565b61043861072a366004612d2d565b611200565b6103ec611208565b610438610745366004612b26565b50505050565b610438610759366004612926565b611217565b610438611245565b610438610774366004612da1565b61124e565b6009546104159062010000900460ff1681565b61043861079a366004612e26565b611286565b61049d61146c565b6104156107b53660046128fe565b61150e565b6104156107c8366004612926565b61153f565b6104386107db366004612b7b565b61154b565b6104386107ee366004612b26565b6115c7565b610438610801366004612a27565b611674565b610415610814366004612eeb565b61174e565b610438610827366004612926565b6117a6565b61043861083a366004612a27565b6117f4565b61043861084d366004612926565b6118c5565b610438610860366004612926565b6118d3565b610438611921565b61041561087b366004612926565b611937565b61049d61088e366004612f4a565b6001600160a01b039182165f90815260116020908152604080832093909416825291909152205490565b6104156108c6366004612926565b611943565b6104386108d9366004612f72565b505050565b6104386108ec366004612fb9565b61194d565b6104386108ff366004612926565b6119a3565b61049d6119dd565b61043861091a366004612926565b6119e6565b60606004805461092e90613022565b80601f016020809104026020016040519081016040528092919081815260200182805461095a90613022565b80156109a55780601f1061097c576101008083540402835291602001916109a5565b820191905f5260205f20905b81548152906001019060200180831161098857829003601f168201915b5050505050905090565b5f6001600160a01b0383166109f05760405162461bcd60e51b81526020600482015260026024820152611a9b60f11b60448201526064015b60405180910390fd5b335f8181526011602090815260408083206001600160a01b03881680855290835292819020869055518581529192917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a35060015b92915050565b335f9081526015602052604090205460ff16610a825760405162461bcd60e51b81526004016109e79061305a565b610a8c8282611a34565b5050565b5f610a4e600e83611b25565b335f9081526015602052604090205460ff16610aca5760405162461bcd60e51b81526004016109e79061305a565b81515f5b81811015610b25575f60145f868481518110610aec57610aec613091565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff1916911515919091179055600101610ace565b508115610b4857600b805461ff001981166101009182900460ff16159091021790555b6040517f79587af599c7940be748e538d50c69fa337c6b269b4715ed6f541ebde418799f905f90a1505050565b5f610b836001858585611b49565b610b9e3385858560405180602001604052805f815250611ff3565b5060019392505050565b5f8281526001602052604081205460ff1615610bfe5760405173455243313832305f4143434550545f4d4147494360601b6020820152603401604051602081830303815290604052805190602001209050610a4e565b505f610a4e565b610c115f338686611b49565b6107453333868686868080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250611ff392505050565b610c5c3361153f565b80610c7057505f546001600160a01b031633145b610c78575f80fd5b610c818161208b565b50565b335f9081526015602052604090205460ff16610cb25760405162461bcd60e51b81526004016109e79061305a565b610c81816120cc565b335f9081526015602052604090205460ff16610ce95760405162461bcd60e51b81526004016109e79061305a565b82515f5b81811015610d6057610d58858281518110610d0a57610d0a613091565b6020026020010151858381518110610d2457610d24613091565b60200260200101516001600160a01b039091165f9081526012602052604090206bffffffffffffffffffffffff9091169055565b600101610ced565b508115610d85576009805462ff0000198116620100009182900460ff16159091021790555b6040517fa3a32f163befecba5c2abdc2c9d52e8301836380a1dca70ca6070edc0a410820905f90a150505050565b335f9081526015602052604090205460ff16610de15760405162461bcd60e51b81526004016109e79061305a565b610dea87612112565b610e065760405162461bcd60e51b81526004016109e7906130a5565b6001600160a01b038816610e2c5760405162461bcd60e51b81526004016109e7906130c1565b6001600160a01b0389165f90815260106020526040902054871115610e635760405162461bcd60e51b81526004016109e7906130dd565b6001600160a01b0389165f90815260106020526040902054610e8690889061310d565b6001600160a01b03808b165f9081526010602052604080822093909355908a1681522054610eb5908890613120565b6001600160a01b03808a165f81815260106020526040908190209390935591518992918c16907f154765d93686b6e616124f28b01e78a69cc8103b435d611ebe55fc6974afb36d90610f0a9087908790613133565b60405180910390a4505050505050505050565b610f2633611937565b610f2e575f80fd5b81306001600160a01b03821603610f43575f80fd5b6108d933848460405180602001604052805f815250612128565b610f6633610a90565b610f6e575f80fd5b610c813382611a34565b610f806122a1565b610f8b600e826122cd565b15610c81576040516001600160a01b038216907ff2a45c66a3036945900f0347af89e060634880208b658f2ed9315febec08d984905f90a250565b335f9081526015602052604090205460ff16610ff45760405162461bcd60e51b81526004016109e79061305a565b6001600160a01b0382165f81815260156020908152604091829020805460ff19168515159081179091558251938452908301527f264ba0779e800dd19064e57f80b6e67ffad83a6763acfb25b8e09d65c4cd595c910160405180910390a15050565b6060611062600c6122e1565b905090565b61106f6122a1565b600b805463ff000000191690556040517fc479843d28551cd1121b0350b3efc2fa391425b75c899ee747da706739c0e08f905f90a1565b5f610a4e826122ed565b6110b86122a1565b6110c15f61230a565b565b6110cc33610a90565b610a82575f80fd5b6060611062600e6122e1565b335f9081526015602052604090205460ff1661110e5760405162461bcd60e51b81526004016109e79061305a565b81515f5b81811015611169575f60135f86848151811061113057611130613091565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff1916911515919091179055600101611112565b50811561118357600b805460ff19811660ff909116151790555b6040517f082d1cecd20d12a706889aee9dc34c06a6bde80ff57dd000ba1647c6b69b7ba8905f90a1505050565b335f9081526015602052604081205460ff166111de5760405162461bcd60e51b81526004016109e79061305a565b506001600160a01b0381165f9081526015602052604090205460ff165b919050565b610a8c6122a1565b60606005805461092e90613022565b6112203361153f565b8061123457505f546001600160a01b031633145b61123c575f80fd5b610c8181612359565b6110c13361208b565b335f9081526015602052604090205460ff1661127c5760405162461bcd60e51b81526004016109e79061305a565b610a8c828261239a565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f811580156112ca5750825b90505f826001600160401b031660011480156112e55750303b155b9050811580156112f3575080155b156113115760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561133b57845460ff60401b1916600160401b1785555b60046113478e826131a5565b5060056113548d826131a5565b50600889905589515f5b818110156113b657600160155f8e848151811061137d5761137d613091565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff191691151591909117905560010161135e565b50600b805461ffff19168a151561ff001916176101008a15150217905560018c10156113e0575f80fd5b60068c90556113ee3361230a565b50600b805463ffff0000191663010100001790556009805462ffff0019166201000088151502179055831561145d57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050505050505050565b5f46817f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f61149861091f565b805190602001206114bd6040805180820190915260018152603160f81b602082015290565b80516020918201206040805192830194909452928101919091526060810191909152608081018390523060a082015260c00160408051601f1981840301815291905280516020909101209392505050565b5f61151b5f338585611b49565b6115363333858560405180602001604052805f815250611ff3565b50600192915050565b5f610a4e6002836123f9565b335f9081526015602052604090205460ff166115795760405162461bcd60e51b81526004016109e79061305a565b6009805461ff0019166101008315158102919091179182905560405160ff91909204161515907f4846f6ecab4e3176c0466a75a9251ab1899ed693ba73b0aa19260081e97c9a67905f90a250565b335f9081526015602052604090205460ff166115f55760405162461bcd60e51b81526004016109e79061305a565b600b546301000000900460ff166116335760405162461bcd60e51b8152602060048201526002602482015261353560f01b60448201526064016109e7565b61074533858585858080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525061212892505050565b335f9081526015602052604090205460ff166116a25760405162461bcd60e51b81526004016109e79061305a565b81515f5b818110156116fe57600160145f8684815181106116c5576116c5613091565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff19169115159190911790556001016116a6565b50811561172157600b805461ff001981166101009182900460ff16159091021790555b6040517f9d4c2e9cfc5810854c7be050924230c59f79ee5849fbb71f1c80f75907c7c169905f90a1505050565b5f816040516020016117609190613264565b60405160208183030381529060405280519060200120836040516020016117879190613264565b6040516020818303038152906040528051906020012014905092915050565b6117ae6122a1565b6117b9600c8261247a565b15610c81576040516001600160a01b038216907fdfd9d11b5f27a5788534fa4067c94acba57d51c580350e038ef0d5e7ee064ba0905f90a250565b335f9081526015602052604090205460ff166118225760405162461bcd60e51b81526004016109e79061305a565b81515f5b8181101561187e57600160135f86848151811061184557611845613091565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff1916911515919091179055600101611826565b50811561189857600b805460ff19811660ff909116151790555b6040517fc706852c47659cb7b77415b22a552d338aa41bc1719ce620596c33a59258305e905f90a1505050565b6118ce816117a6565b610c81815b6118db6122a1565b6118e6600e8261247a565b15610c81576040516001600160a01b038216907fed45a0db84376eb1a392e8aba1004c33a8c682d2b458053f523c688fd895e9b1905f90a250565b6119296122a1565b600b805462ff000019169055565b5f610a4e600c83611b25565b5f610a4e8261248e565b61195a6001868686611b49565b61199c3386868686868080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250611ff392505050565b5050505050565b6119ab6122a1565b6001600160a01b0381166119d457604051631e4fbdf760e01b81525f60048201526024016109e7565b610c818161230a565b5f6110626124ab565b6119ee6122a1565b6119f9600c826122cd565b15610c81576040516001600160a01b038216907f7c45ad7a0fff014220c921bdba3fb0c0aab902df8a5efb090b69db09d1256b8b905f90a250565b611a3d81612112565b611a595760405162461bcd60e51b81526004016109e7906130a5565b80600754611a67919061310d565b6007556001600160a01b0382165f90815260106020526040902054611a8d90829061310d565b6001600160a01b0383165f90815260106020526040902055611aae33610a90565b15611aec576040516001600160a01b0383169082907fca191c0d7882520fe92d4ee2952509a5b528728f4ae3d71521c967827a9a82a0905f90a35050565b6040516001600160a01b0383169082907f0bcfa9a60f30cc4cc988377198c72a449d54bbe2480a91bc2462cafe64692287905f90a35050565b6001600160a01b0381165f90815260018301602052604081205415155b9392505050565b335f9081526015602052604090205460ff1615611ba757600954610100900460ff1615611ba75760405162461bcd60e51b815260206004820152600c60248201526b333937bd32b7103a37b5b2b760a11b60448201526064016109e7565b60095462010000900460ff1615611c4b576001600160a01b0383165f9081526012602052604090205415611c4b576001600160a01b0383165f90815260126020908152604080832054601090925290912054611c0490839061310d565b1015611c4b5760405162461bcd60e51b81526020600482015260166024820152754e6f7420656e6f756768206672656520746f6b656e7360501b60448201526064016109e7565b8315611e8457335f9081526015602052604090205460ff161561074557600b5460ff1615611d2757611c7c826122ed565b1515600114611ccd5760405162461bcd60e51b815260206004820152601c60248201527f5265636569766572206973206e6f7420696e2077686974654c6973740000000060448201526064016109e7565b611cd6836122ed565b1515600114611d275760405162461bcd60e51b815260206004820152601a60248201527f53656e646572206973206e6f7420696e2077686974654c69737400000000000060448201526064016109e7565b600b54610100900460ff1615611dd757611d408361248e565b15611d865760405162461bcd60e51b815260206004820152601660248201527514d95b99195c881a5cc81a5b88189b1858dad31a5cdd60521b60448201526064016109e7565b611d8f8261248e565b15611dd75760405162461bcd60e51b8152602060048201526018602482015277149958d95a5d995c881a5cc81a5b88189b1858dad31a5cdd60421b60448201526064016109e7565b6001600160a01b0383165f908152601160209081526040808320338452909152902054811115611e2e5760405162461bcd60e51b8152602060048201526002602482015261353360f01b60448201526064016109e7565b6001600160a01b0383165f908152601160209081526040808320338452909152902054611e5c90829061310d565b6001600160a01b0384165f908152601160209081526040808320338452909152902055610745565b600b5460ff1615611f4357611e98826122ed565b1515600114611ee95760405162461bcd60e51b815260206004820152601c60248201527f5265636569766572206973206e6f7420696e2077686974654c6973740000000060448201526064016109e7565b611ef2836122ed565b1515600114611f435760405162461bcd60e51b815260206004820152601a60248201527f53656e646572206973206e6f7420696e2077686974654c69737400000000000060448201526064016109e7565b600b54610100900460ff161561074557611f5c8361248e565b15611fa25760405162461bcd60e51b815260206004820152601660248201527514d95b99195c881a5cc81a5b88189b1858dad31a5cdd60521b60448201526064016109e7565b611fab8261248e565b156107455760405162461bcd60e51b8152602060048201526018602482015277149958d95a5d995c881a5cc81a5b88189b1858dad31a5cdd60421b60448201526064016109e7565b6001600160a01b0384165f908152601060205260409020548083111561202b5760405162461bcd60e51b81526004016109e7906130dd565b6120368585856124d3565b836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161207b91815260200190565b60405180910390a3505050505050565b6120966002826125f5565b6040516001600160a01b038216907fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb66692905f90a250565b6009805462ff0000191662010000831515908102919091179091556040517fc6cb6b2a86ca168bb9c414664cb88d9494d69b23a43d2b9a9b95b26aae372c5a905f90a250565b5f60065482612121919061327f565b1592915050565b61213182612112565b61214d5760405162461bcd60e51b81526004016109e7906130a5565b6001600160a01b0383166121735760405162461bcd60e51b81526004016109e7906130c1565b600854826007546121849190613120565b11156121d25760405162461bcd60e51b815260206004820152601f60248201527f457863656564206d6178696d756d206e756d626572206f6620746f6b656e730060448201526064016109e7565b816007546121e09190613120565b6007556001600160a01b0383165f90815260106020526040902054612206908390613120565b6001600160a01b0384165f9081526010602052604090205561222784611937565b156122665760405182906001600160a01b038516907f0d6b79271151a629ed74b4e681831f936a717e90caf14f15c7293043dab75c00905f90a3610745565b60405182906001600160a01b038516907f4e41c9552e57df1a1b1373aa10ab100818453f016baf09f281b1ce98978453f6905f90a350505050565b5f546001600160a01b031633146110c15760405163118cdaa760e01b81523360048201526024016109e7565b5f611b42836001600160a01b038416612676565b60605f611b4283612759565b6001600160a01b03165f9081526013602052604090205460ff1690565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6123646002826127b2565b6040516001600160a01b038216907f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f6905f90a250565b600b805461ffff191683151561ff001916176101008315158102919091179182905560405160ff9183048216151592919091161515907f7e1e367a3566ce0d20b5e5c353f777f0d5e022cba6ef8b35b68d0dfe6e8f892d905f90a35050565b5f6001600160a01b03821661245b5760405162461bcd60e51b815260206004820152602260248201527f526f6c65733a206163636f756e7420697320746865207a65726f206164647265604482015261737360f01b60648201526084016109e7565b506001600160a01b03165f908152602091909152604090205460ff1690565b5f611b42836001600160a01b03841661282d565b6001600160a01b03165f9081526014602052604090205460ff1690565b465f9081526003602052604081205480156124c557919050565b6124cd612872565b91505090565b6124dc81612112565b6124f85760405162461bcd60e51b81526004016109e7906130a5565b6001600160a01b03821661251e5760405162461bcd60e51b81526004016109e7906130c1565b6001600160a01b0383165f908152601060205260409020548111156125555760405162461bcd60e51b81526004016109e7906130dd565b6001600160a01b0383165f9081526010602052604090205461257890829061310d565b6001600160a01b038085165f9081526010602052604080822093909355908416815220546125a7908290613120565b6001600160a01b038084165f81815260106020526040808220949094559251849391928716917fb4d2a64e10e2405e822beac85347a2cbded0a4997a01a656b3f875894bd0d97891a4505050565b6125ff82826123f9565b6126555760405162461bcd60e51b815260206004820152602160248201527f526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c6044820152606560f81b60648201526084016109e7565b6001600160a01b03165f90815260209190915260409020805460ff19169055565b5f8181526001830160205260408120548015612750575f61269860018361310d565b85549091505f906126ab9060019061310d565b905080821461270a575f865f0182815481106126c9576126c9613091565b905f5260205f200154905080875f0184815481106126e9576126e9613091565b5f918252602080832090910192909255918252600188019052604090208390555b855486908061271b5761271b61329e565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f905560019350505050610a4e565b5f915050610a4e565b6060815f018054806020026020016040519081016040528092919081815260200182805480156127a657602002820191905f5260205f20905b815481526020019060010190808311612792575b50505050509050919050565b6127bc82826123f9565b156128095760405162461bcd60e51b815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c650060448201526064016109e7565b6001600160a01b03165f90815260209190915260409020805460ff19166001179055565b5f818152600183016020526040812054610bfe57508154600181810184555f848152602080822090930184905584548482528286019093526040902091909155610a4e565b5f468161287d61146c565b5f9283526003602052604090922082905550919050565b5f5b838110156128ae578181015183820152602001612896565b50505f910152565b602081525f82518060208401526128d4816040850160208701612894565b601f01601f19169190910160400192915050565b80356001600160a01b03811681146111fb575f80fd5b5f806040838503121561290f575f80fd5b612918836128e8565b946020939093013593505050565b5f60208284031215612936575f80fd5b611b42826128e8565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b038111828210171561297b5761297b61293f565b604052919050565b5f6001600160401b0382111561299b5761299b61293f565b5060051b60200190565b5f82601f8301126129b4575f80fd5b813560206129c96129c483612983565b612953565b8083825260208201915060208460051b8701019350868411156129ea575f80fd5b602086015b84811015612a0d57612a00816128e8565b83529183019183016129ef565b509695505050505050565b803580151581146111fb575f80fd5b5f8060408385031215612a38575f80fd5b82356001600160401b03811115612a4d575f80fd5b612a59858286016129a5565b925050612a6860208401612a18565b90509250929050565b5f60208284031215612a81575f80fd5b5035919050565b5f805f60608486031215612a9a575f80fd5b612aa3846128e8565b9250612ab1602085016128e8565b9150604084013590509250925092565b5f8060408385031215612ad2575f80fd5b82359150612a68602084016128e8565b5f8083601f840112612af2575f80fd5b5081356001600160401b03811115612b08575f80fd5b602083019150836020828501011115612b1f575f80fd5b9250929050565b5f805f8060608587031215612b39575f80fd5b612b42856128e8565b93506020850135925060408501356001600160401b03811115612b63575f80fd5b612b6f87828801612ae2565b95989497509550505050565b5f60208284031215612b8b575f80fd5b611b4282612a18565b5f805f60608486031215612ba6575f80fd5b83356001600160401b0380821115612bbc575f80fd5b612bc8878388016129a5565b9450602091508186013581811115612bde575f80fd5b86019050601f81018713612bf0575f80fd5b8035612bfe6129c482612983565b81815260059190911b82018301908381019089831115612c1c575f80fd5b928401925b82841015612c535783356bffffffffffffffffffffffff81168114612c44575f80fd5b82529284019290840190612c21565b8096505050505050612c6760408501612a18565b90509250925092565b5f805f805f805f805f60c08a8c031215612c88575f80fd5b612c918a6128e8565b9850612c9f60208b016128e8565b975060408a0135965060608a01356001600160401b0380821115612cc1575f80fd5b612ccd8d838e01612ae2565b909850965060808c0135915080821115612ce5575f80fd5b612cf18d838e01612ae2565b909650945060a08c0135915080821115612d09575f80fd5b50612d168c828d01612ae2565b915080935050809150509295985092959850929598565b5f8060408385031215612d3e575f80fd5b612d47836128e8565b9150612a6860208401612a18565b602080825282518282018190525f9190848201906040850190845b81811015612d955783516001600160a01b031683529284019291840191600101612d70565b50909695505050505050565b5f8060408385031215612db2575f80fd5b612d4783612a18565b5f82601f830112612dca575f80fd5b81356001600160401b03811115612de357612de361293f565b612df6601f8201601f1916602001612953565b818152846020838601011115612e0a575f80fd5b816020850160208301375f918101602001919091529392505050565b5f805f805f805f80610100898b031215612e3e575f80fd5b88356001600160401b0380821115612e54575f80fd5b612e608c838d01612dbb565b995060208b0135915080821115612e75575f80fd5b612e818c838d01612dbb565b985060408b0135975060608b0135915080821115612e9d575f80fd5b50612eaa8b828c016129a5565b95505060808901359350612ec060a08a01612a18565b9250612ece60c08a01612a18565b9150612edc60e08a01612a18565b90509295985092959890939650565b5f8060408385031215612efc575f80fd5b82356001600160401b0380821115612f12575f80fd5b612f1e86838701612dbb565b93506020850135915080821115612f33575f80fd5b50612f4085828601612dbb565b9150509250929050565b5f8060408385031215612f5b575f80fd5b612f64836128e8565b9150612a68602084016128e8565b5f805f60408486031215612f84575f80fd5b8335925060208401356001600160401b03811115612fa0575f80fd5b612fac86828701612ae2565b9497909650939450505050565b5f805f805f60808688031215612fcd575f80fd5b612fd6866128e8565b9450612fe4602087016128e8565b93506040860135925060608601356001600160401b03811115613005575f80fd5b61301188828901612ae2565b969995985093965092949392505050565b600181811c9082168061303657607f821691505b60208210810361305457634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252601b908201527f63616c6c6572206973206e6f742061646d696e4f70657261746f720000000000604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b602080825260029082015261035360f41b604082015260600190565b602080825260029082015261353760f01b604082015260600190565b6020808252600290820152611a9960f11b604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b81810381811115610a4e57610a4e6130f9565b80820180821115610a4e57610a4e6130f9565b60208152816020820152818360408301375f818301604090810191909152601f909201601f19160101919050565b601f8211156108d957805f5260205f20601f840160051c810160208510156131865750805b601f840160051c820191505b8181101561199c575f8155600101613192565b81516001600160401b038111156131be576131be61293f565b6131d2816131cc8454613022565b84613161565b602080601f831160018114613205575f84156131ee5750858301515b5f19600386901b1c1916600185901b17855561325c565b5f85815260208120601f198616915b8281101561323357888601518255948401946001909101908401613214565b508582101561325057878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b5f8251613275818460208701612894565b9190910192915050565b5f8261329957634e487b7160e01b5f52601260045260245ffd5b500690565b634e487b7160e01b5f52603160045260245ffdfea264697066735822122081a4c1bd664dbcf5523214fa5f55ccf2552f14714aafbd83d9b86d03a0232c7364736f6c63430008180033