6080604052600b805460ff1916600117905566470de4df820000600c5534801562000028575f80fd5b506040518060400160405280600e81526020016d05374726970636861696e20506f560941b81525060405180604001604052806004815260200163053504f560e41b815250815f90816200007d9190620001a9565b5060016200008c8282620001a9565b505050620000a9620000a3620000b460201b60201c565b620000b8565b600160075562000271565b3390565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806200013257607f821691505b6020821081036200015157634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115620001a4575f81815260208120601f850160051c810160208610156200017f5750805b601f850160051c820191505b81811015620001a0578281556001016200018b565b5050505b505050565b81516001600160401b03811115620001c557620001c562000109565b620001dd81620001d684546200011d565b8462000157565b602080601f83116001811462000213575f8415620001fb5750858301515b5f19600386901b1c1916600185901b178555620001a0565b5f85815260208120601f198616915b82811015620002435788860151825594840194600190910190840162000222565b50858210156200026157878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b61203b806200027f5f395ff3fe6080604052600436106101c5575f3560e01c806370a08231116100f2578063a22cb46511610092578063e985e9c511610062578063e985e9c5146104d2578063eddd0d9c14610519578063f2fde38b14610538578063f84ddf0b14610557575f80fd5b8063a22cb46514610461578063b88d4fde14610480578063c87b56dd1461049f578063d547cfb7146104be575f80fd5b8063833c1d95116100cd578063833c1d95146103e95780638da5cb5b1461040257806395d89b411461041f5780639b19251a14610433575f80fd5b806370a0823114610397578063715018a6146103b65780637f649783146103ca575f80fd5b806323b872dd1161016857806342966c681161013857806342966c681461031b578063548db1741461033a57806355f804b3146103595780636352211e14610378575f80fd5b806323b872dd146102b557806338b616c1146102d45780633ccfd60b146102e857806342842e0e146102fc575f80fd5b8063081812fc116101a3578063081812fc14610234578063095ea7b31461026b5780631249c58b1461028a57806313966db514610292575f80fd5b806301ffc9a7146101c9578063059cbd9b146101fd57806306fdde0314610213575b5f80fd5b3480156101d4575f80fd5b506101e86101e33660046119e1565b61056c565b60405190151581526020015b60405180910390f35b348015610208575f80fd5b506102116105bd565b005b34801561021e575f80fd5b50610227610623565b6040516101f49190611a49565b34801561023f575f80fd5b5061025361024e366004611a5b565b6106b2565b6040516001600160a01b0390911681526020016101f4565b348015610276575f80fd5b50610211610285366004611a8d565b6106d7565b6102116107eb565b34801561029d575f80fd5b506102a7600c5481565b6040519081526020016101f4565b3480156102c0575f80fd5b506102116102cf366004611ab5565b610962565b3480156102df575f80fd5b50610211610993565b3480156102f3575f80fd5b506102116109f2565b348015610307575f80fd5b50610211610316366004611ab5565b610a33565b348015610326575f80fd5b50610211610335366004611a5b565b610a4d565b348015610345575f80fd5b50610211610354366004611aee565b610b5c565b348015610364575f80fd5b50610211610373366004611be4565b610c1e565b348015610383575f80fd5b50610253610392366004611a5b565b610c36565b3480156103a2575f80fd5b506102a76103b1366004611c29565b610c95565b3480156103c1575f80fd5b50610211610d19565b3480156103d5575f80fd5b506102116103e4366004611aee565b610d2a565b3480156103f4575f80fd5b50600b546101e89060ff1681565b34801561040d575f80fd5b506006546001600160a01b0316610253565b34801561042a575f80fd5b50610227610dec565b34801561043e575f80fd5b506101e861044d366004611c29565b600a6020525f908152604090205460ff1681565b34801561046c575f80fd5b5061021161047b366004611c42565b610dfb565b34801561048b575f80fd5b5061021161049a366004611c7b565b610e06565b3480156104aa575f80fd5b506102276104b9366004611a5b565b610e3e565b3480156104c9575f80fd5b50610227610ea2565b3480156104dd575f80fd5b506101e86104ec366004611cf2565b6001600160a01b039182165f90815260056020908152604080832093909416825291909152205460ff1690565b348015610524575f80fd5b50610211610533366004611a5b565b610f2e565b348015610543575f80fd5b50610211610552366004611c29565b610f3b565b348015610562575f80fd5b506102a760085481565b5f6001600160e01b031982166380ac58cd60e01b148061059c57506001600160e01b03198216635b5e139f60e01b145b806105b757506301ffc9a760e01b6001600160e01b03198316145b92915050565b6105c5610fb1565b600b5460ff16156106145760405162461bcd60e51b815260206004820152601460248201527314d413d40e88185b1c9958591e481c185d5cd95960621b60448201526064015b60405180910390fd5b600b805460ff19166001179055565b60605f805461063190611d23565b80601f016020809104026020016040519081016040528092919081815260200182805461065d90611d23565b80156106a85780601f1061067f576101008083540402835291602001916106a8565b820191905f5260205f20905b81548152906001019060200180831161068b57829003601f168201915b5050505050905090565b5f6106bc8261100b565b505f908152600460205260409020546001600160a01b031690565b5f6106e182610c36565b9050806001600160a01b0316836001600160a01b03160361074e5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b606482015260840161060b565b336001600160a01b038216148061076a575061076a81336104ec565b6107dc5760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c000000606482015260840161060b565b6107e68383611069565b505050565b6107f36110d6565b335f908152600a602052604090205460ff166108515760405162461bcd60e51b815260206004820152601f60248201527f53504f503a2063616c6c6572206973206e6f742077686974656c697374656400604482015260640161060b565b600c543410156108a35760405162461bcd60e51b815260206004820152601860248201527f53504f503a20696e636f7272656374206d696e74206665650000000000000000604482015260640161060b565b6108ac33610c95565b156108f95760405162461bcd60e51b815260206004820181905260248201527f53504f503a206f6e6c79206f6e6520746f6b656e207065722061646472657373604482015260640161060b565b60088054905f61090883611d5b565b91905055506109193360085461112f565b6008546040805191825242602083015233917f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f910160405180910390a26109606001600755565b565b61096c3382611148565b6109885760405162461bcd60e51b815260040161060b90611d7f565b6107e68383836111c5565b61099b610fb1565b600b5460ff166109e65760405162461bcd60e51b815260206004820152601660248201527514d413d40e88185b1c9958591e481d5b9c185d5cd95960521b604482015260640161060b565b600b805460ff19169055565b6109fa610fb1565b6006546040516001600160a01b03909116904780156108fc02915f818181858888f19350505050158015610a30573d5f803e3d5ffd5b50565b6107e683838360405180602001604052805f815250610e06565b600b5460ff1615610aa05760405162461bcd60e51b815260206004820152601760248201527f53504f503a206275726e696e6720697320706175736564000000000000000000604482015260640161060b565b33610aaa82610c36565b6001600160a01b031614610b005760405162461bcd60e51b815260206004820152601f60248201527f53504f503a2063616c6c6572206973206e6f7420746f6b656e206f776e657200604482015260640161060b565b335f908152600a60205260409020805460ff19169055610b1f81611334565b6040805182815242602082015233917f49995e5dd6158cf69ad3e9777c46755a1a826a446c6416992167462dad033b2a910160405180910390a250565b610b64610fb1565b5f5b818110156107e657600a5f848484818110610b8357610b83611dcc565b9050602002016020810190610b989190611c29565b6001600160a01b0316815260208101919091526040015f205460ff1615610c0c575f600a5f858585818110610bcf57610bcf611dcc565b9050602002016020810190610be49190611c29565b6001600160a01b0316815260208101919091526040015f20805460ff19169115159190911790555b80610c1681611d5b565b915050610b66565b610c26610fb1565b6009610c328282611e2d565b5050565b5f818152600260205260408120546001600160a01b0316806105b75760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604482015260640161060b565b5f6001600160a01b038216610cfe5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b606482015260840161060b565b506001600160a01b03165f9081526003602052604090205490565b610d21610fb1565b6109605f6113d3565b610d32610fb1565b5f5b818110156107e657600a5f848484818110610d5157610d51611dcc565b9050602002016020810190610d669190611c29565b6001600160a01b0316815260208101919091526040015f205460ff16610dda576001600a5f858585818110610d9d57610d9d611dcc565b9050602002016020810190610db29190611c29565b6001600160a01b0316815260208101919091526040015f20805460ff19169115159190911790555b80610de481611d5b565b915050610d34565b60606001805461063190611d23565b610c32338383611424565b610e103383611148565b610e2c5760405162461bcd60e51b815260040161060b90611d7f565b610e38848484846114f1565b50505050565b6060610e498261100b565b5f610e52611524565b90505f815111610e705760405180602001604052805f815250610e9b565b80610e7a84611533565b604051602001610e8b929190611ee9565b6040516020818303038152906040525b9392505050565b60098054610eaf90611d23565b80601f0160208091040260200160405190810160405280929190818152602001828054610edb90611d23565b8015610f265780601f10610efd57610100808354040283529160200191610f26565b820191905f5260205f20905b815481529060010190602001808311610f0957829003601f168201915b505050505081565b610f36610fb1565b600c55565b610f43610fb1565b6001600160a01b038116610fa85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161060b565b610a30816113d3565b6006546001600160a01b031633146109605760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161060b565b5f818152600260205260409020546001600160a01b0316610a305760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604482015260640161060b565b5f81815260046020526040902080546001600160a01b0319166001600160a01b038416908117909155819061109d82610c36565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6002600754036111285760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161060b565b6002600755565b610c32828260405180602001604052805f8152506115c3565b5f8061115383610c36565b9050806001600160a01b0316846001600160a01b0316148061119957506001600160a01b038082165f9081526005602090815260408083209388168352929052205460ff165b806111bd5750836001600160a01b03166111b2846106b2565b6001600160a01b0316145b949350505050565b826001600160a01b03166111d882610c36565b6001600160a01b0316146111fe5760405162461bcd60e51b815260040161060b90611f17565b6001600160a01b0382166112605760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b606482015260840161060b565b61126d83838360016115f5565b826001600160a01b031661128082610c36565b6001600160a01b0316146112a65760405162461bcd60e51b815260040161060b90611f17565b5f81815260046020908152604080832080546001600160a01b03199081169091556001600160a01b038781168086526003855283862080545f1901905590871680865283862080546001019055868652600290945282852080549092168417909155905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b5f61133e82610c36565b905061134d815f8460016115f5565b61135682610c36565b5f83815260046020908152604080832080546001600160a01b03199081169091556001600160a01b0385168085526003845282852080545f190190558785526002909352818420805490911690555192935084927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b600680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b816001600160a01b0316836001600160a01b0316036114855760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015260640161060b565b6001600160a01b038381165f81815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6114fc8484846111c5565b61150884848484611663565b610e385760405162461bcd60e51b815260040161060b90611f5c565b60606009805461063190611d23565b60605f61153f83611760565b60010190505f8167ffffffffffffffff81111561155e5761155e611b5d565b6040519080825280601f01601f191660200182016040528015611588576020820181803683370190505b5090508181016020015b5f19016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a850494508461159257509392505050565b6115cd8383611837565b6115d95f848484611663565b6107e65760405162461bcd60e51b815260040161060b90611f5c565b6001600160a01b038416158061161257506001600160a01b038316155b61165e5760405162461bcd60e51b815260206004820152601f60248201527f53504f503a20746f6b656e206973206e6f74207472616e7366657261626c6500604482015260640161060b565b610e38565b5f6001600160a01b0384163b1561175557604051630a85bd0160e11b81526001600160a01b0385169063150b7a02906116a6903390899088908890600401611fae565b6020604051808303815f875af19250505080156116e0575060408051601f3d908101601f191682019092526116dd91810190611fea565b60015b61173b573d80801561170d576040519150601f19603f3d011682016040523d82523d5f602084013e611712565b606091505b5080515f036117335760405162461bcd60e51b815260040161060b90611f5c565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506111bd565b506001949350505050565b5f8072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b831061179e5772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef810000000083106117ca576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc1000083106117e857662386f26fc10000830492506010015b6305f5e1008310611800576305f5e100830492506008015b612710831061181457612710830492506004015b60648310611826576064830492506002015b600a83106105b75760010192915050565b6001600160a01b03821661188d5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015260640161060b565b5f818152600260205260409020546001600160a01b0316156118f15760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015260640161060b565b6118fe5f838360016115f5565b5f818152600260205260409020546001600160a01b0316156119625760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015260640161060b565b6001600160a01b0382165f81815260036020908152604080832080546001019055848352600290915280822080546001600160a01b0319168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6001600160e01b031981168114610a30575f80fd5b5f602082840312156119f1575f80fd5b8135610e9b816119cc565b5f5b83811015611a165781810151838201526020016119fe565b50505f910152565b5f8151808452611a358160208601602086016119fc565b601f01601f19169290920160200192915050565b602081525f610e9b6020830184611a1e565b5f60208284031215611a6b575f80fd5b5035919050565b80356001600160a01b0381168114611a88575f80fd5b919050565b5f8060408385031215611a9e575f80fd5b611aa783611a72565b946020939093013593505050565b5f805f60608486031215611ac7575f80fd5b611ad084611a72565b9250611ade60208501611a72565b9150604084013590509250925092565b5f8060208385031215611aff575f80fd5b823567ffffffffffffffff80821115611b16575f80fd5b818501915085601f830112611b29575f80fd5b813581811115611b37575f80fd5b8660208260051b8501011115611b4b575f80fd5b60209290920196919550909350505050565b634e487b7160e01b5f52604160045260245ffd5b5f67ffffffffffffffff80841115611b8b57611b8b611b5d565b604051601f8501601f19908116603f01168101908282118183101715611bb357611bb3611b5d565b81604052809350858152868686011115611bcb575f80fd5b858560208301375f602087830101525050509392505050565b5f60208284031215611bf4575f80fd5b813567ffffffffffffffff811115611c0a575f80fd5b8201601f81018413611c1a575f80fd5b6111bd84823560208401611b71565b5f60208284031215611c39575f80fd5b610e9b82611a72565b5f8060408385031215611c53575f80fd5b611c5c83611a72565b915060208301358015158114611c70575f80fd5b809150509250929050565b5f805f8060808587031215611c8e575f80fd5b611c9785611a72565b9350611ca560208601611a72565b925060408501359150606085013567ffffffffffffffff811115611cc7575f80fd5b8501601f81018713611cd7575f80fd5b611ce687823560208401611b71565b91505092959194509250565b5f8060408385031215611d03575f80fd5b611d0c83611a72565b9150611d1a60208401611a72565b90509250929050565b600181811c90821680611d3757607f821691505b602082108103611d5557634e487b7160e01b5f52602260045260245ffd5b50919050565b5f60018201611d7857634e487b7160e01b5f52601160045260245ffd5b5060010190565b6020808252602d908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526c1c881bdc88185c1c1c9bdd9959609a1b606082015260800190565b634e487b7160e01b5f52603260045260245ffd5b601f8211156107e6575f81815260208120601f850160051c81016020861015611e065750805b601f850160051c820191505b81811015611e2557828155600101611e12565b505050505050565b815167ffffffffffffffff811115611e4757611e47611b5d565b611e5b81611e558454611d23565b84611de0565b602080601f831160018114611e8e575f8415611e775750858301515b5f19600386901b1c1916600185901b178555611e25565b5f85815260208120601f198616915b82811015611ebc57888601518255948401946001909101908401611e9d565b5085821015611ed957878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b5f8351611efa8184602088016119fc565b835190830190611f0e8183602088016119fc565b01949350505050565b60208082526025908201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060408201526437bbb732b960d91b606082015260800190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6001600160a01b03858116825284166020820152604081018390526080606082018190525f90611fe090830184611a1e565b9695505050505050565b5f60208284031215611ffa575f80fd5b8151610e9b816119cc56fea2646970667358221220a41312cbc306434045ab6a1f5f519b740d2fc0be4c3009501e3daa3c96e32ba864736f6c63430008150033