60a06040523060805234801562000014575f80fd5b50604051620014cb380380620014cb8339810160408190526200003791620001dd565b6040518060400160405280600d81526020016c2430b6b9ba32b9103a37b5b2b760991b815250604051806040016040528060058152602001642426a9aa2960d91b81525081600390816200008c9190620002e5565b5060046200009b8282620002e5565b505042600c5550600a8590556009849055600b805463ffffffff191663ffffffff8516179055600580546001600160a01b0319166001600160a01b038316179055620000e83083620000f3565b5050505050620003d3565b6001600160a01b0382166200014e5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b8060025f828254620001619190620003ad565b90915550506001600160a01b0382165f90815260208190526040812080548392906200018f908490620003ad565b90915550506040518181526001600160a01b038316905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b505050565b5f805f805f60a08688031215620001f2575f80fd5b8551945060208601519350604086015163ffffffff8116811462000214575f80fd5b6060870151608088015191945092506001600160a01b038116811462000238575f80fd5b809150509295509295909350565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806200026f57607f821691505b6020821081036200028e57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115620001d8575f81815260208120601f850160051c81016020861015620002bc5750805b601f850160051c820191505b81811015620002dd57828155600101620002c8565b505050505050565b81516001600160401b0381111562000301576200030162000246565b62000319816200031284546200025a565b8462000294565b602080601f8311600181146200034f575f8415620003375750858301515b5f19600386901b1c1916600185901b178555620002dd565b5f85815260208120601f198616915b828110156200037f578886015182559484019460019091019084016200035e565b50858210156200039d57878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b80820180821115620003cd57634e487b7160e01b5f52601160045260245ffd5b92915050565b6080516110d8620003f35f395f818161045401526107e301526110d85ff3fe608060405234801561000f575f80fd5b506004361061018f575f3560e01c806370a08231116100dd578063d55f31f711610088578063f7b2a7be11610063578063f7b2a7be14610383578063f91c05f6146103a8578063fd221031146103b1575f80fd5b8063d55f31f71461032f578063dd62ed3e14610338578063e697b5d814610370575f80fd5b8063976ab20f116100b8578063976ab20f14610300578063a457c2d714610309578063a9059cbb1461031c575f80fd5b806370a08231146102b1578063928278f6146102d957806395d89b41146102f8575f80fd5b806323b872dd1161013d578063395093511161011857806339509351146102785780634f8632ba1461028b5780635f7dbe811461029e575f80fd5b806323b872dd146102435780632cbd240614610256578063313ce56714610269575f80fd5b80630c467fa61161016d5780630c467fa6146101de5780630ea2f7441461021e57806318160ddd14610231575f80fd5b8063055ee2531461019357806306fdde031461019d578063095ea7b3146101bb575b5f80fd5b61019b6103b9565b005b6101a5610543565b6040516101b29190610eff565b60405180910390f35b6101ce6101c9366004610f65565b6105d3565b60405190151581526020016101b2565b6102066101ec366004610f8d565b60066020525f90815260409020546001600160a01b031681565b6040516001600160a01b0390911681526020016101b2565b61019b61022c366004610f8d565b6105e9565b6002545b6040519081526020016101b2565b6101ce610251366004610fad565b610696565b61019b610264366004610f8d565b610753565b604051601281526020016101b2565b6101ce610286366004610f65565b6108a1565b600554610206906001600160a01b031681565b61019b6102ac366004610f8d565b6108dc565b6102356102bf366004610f8d565b6001600160a01b03165f9081526020819052604090205490565b6102356102e7366004610f8d565b60086020525f908152604090205481565b6101a5610906565b610235600a5481565b6101ce610317366004610f65565b610915565b6101ce61032a366004610f65565b6109c5565b610235600c5481565b610235610346366004610fe6565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b61020661037e366004610f65565b6109d1565b600b546103939063ffffffff1681565b60405163ffffffff90911681526020016101b2565b61023560095481565b61019b610a05565b600a54600c546103c9919061102b565b42101561041d5760405162461bcd60e51b815260206004820152600760248201527f4e6f74206e6f770000000000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b600d5460ff161561042c575f80fd5b600d805460ff19166001179055335f908152600760205260408120905b815481101561051d577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316635f7dbe818383815481106104935761049361103e565b5f9182526020909120015460405160e083901b7fffffffff000000000000000000000000000000000000000000000000000000001681526001600160a01b0390911660048201526024015f604051808303815f87803b1580156104f4575f80fd5b505af1158015610506573d5f803e3d5ffd5b50505050808061051590611052565b915050610449565b5042600c55600b5461053690339063ffffffff16610ab6565b50600d805460ff19169055565b6060600380546105529061106a565b80601f016020809104026020016040519081016040528092919081815260200182805461057e9061106a565b80156105c95780601f106105a0576101008083540402835291602001916105c9565b820191905f5260205f20905b8154815290600101906020018083116105ac57829003601f168201915b5050505050905090565b5f6105df338484610b92565b5060015b92915050565b6001600160a01b0381165f908152600760205260408120905b81548110156106915781818154811061061d5761061d61103e565b5f918252602090912001546001600160a01b0316330361067f5760405162461bcd60e51b815260206004820152600e60248201527f416c726561647920666f6c6c6f770000000000000000000000000000000000006044820152606401610414565b8061068981611052565b915050610602565b505050565b5f6106a2848484610ce9565b6001600160a01b0384165f9081526001602090815260408083203384529091529020548281101561073b5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206160448201527f6c6c6f77616e63650000000000000000000000000000000000000000000000006064820152608401610414565b6107488533858403610b92565b506001949350505050565b336001600160a01b038216036107ab5760405162461bcd60e51b815260206004820152600960248201527f466f7262696464656e00000000000000000000000000000000000000000000006044820152606401610414565b6040517f0ea2f7440000000000000000000000000000000000000000000000000000000081526001600160a01b0382811660048301527f00000000000000000000000000000000000000000000000000000000000000001690630ea2f744906024015f6040518083038186803b158015610823575f80fd5b505afa158015610835573d5f803e3d5ffd5b5050335f81815260066020908152604080832080546001600160a01b039098167fffffffffffffffffffffffff00000000000000000000000000000000000000009889168117909155835260078252822080546001810182559083529120018054909416179092555050565b335f8181526001602090815260408083206001600160a01b038716845290915281205490916105df9185906108d790869061102b565b610b92565b600d5460ff1615156001146108ef575f80fd5b600b5461090390829063ffffffff16610ab6565b50565b6060600480546105529061106a565b335f9081526001602090815260408083206001600160a01b0386168452909152812054828110156109ae5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f0000000000000000000000000000000000000000000000000000006064820152608401610414565b6109bb3385858403610b92565b5060019392505050565b5f6105df338484610ce9565b6007602052815f5260405f2081815481106109ea575f80fd5b5f918252602090912001546001600160a01b03169150829050565b335f9081526008602052604090205415801590610a3c5750600954335f90815260086020526040902054610a39919061102b565b42105b15610a895760405162461bcd60e51b815260206004820152601160248201527f5761697420666f72206e657874207461700000000000000000000000000000006044820152606401610414565b335f8181526007602090815260408083205460089092529091204290559061090390610ab683600161102b565b6001600160a01b038216610b0c5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610414565b8060025f828254610b1d919061102b565b90915550506001600160a01b0382165f9081526020819052604081208054839290610b4990849061102b565b90915550506040518181526001600160a01b038316905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6001600160a01b038316610c0d5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610414565b6001600160a01b038216610c895760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610414565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610d655760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610414565b6001600160a01b038216610de15760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610414565b6001600160a01b0383165f9081526020819052604090205481811015610e6f5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401610414565b6001600160a01b038085165f90815260208190526040808220858503905591851681529081208054849290610ea590849061102b565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610ef191815260200190565b60405180910390a350505050565b5f6020808352835180828501525f5b81811015610f2a57858101830151858201604001528201610f0e565b505f604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114610f60575f80fd5b919050565b5f8060408385031215610f76575f80fd5b610f7f83610f4a565b946020939093013593505050565b5f60208284031215610f9d575f80fd5b610fa682610f4a565b9392505050565b5f805f60608486031215610fbf575f80fd5b610fc884610f4a565b9250610fd660208501610f4a565b9150604084013590509250925092565b5f8060408385031215610ff7575f80fd5b61100083610f4a565b915061100e60208401610f4a565b90509250929050565b634e487b7160e01b5f52601160045260245ffd5b808201808211156105e3576105e3611017565b634e487b7160e01b5f52603260045260245ffd5b5f6001820161106357611063611017565b5060010190565b600181811c9082168061107e57607f821691505b60208210810361109c57634e487b7160e01b5f52602260045260245ffd5b5091905056fea2646970667358221220d4a230b0a10157622549c9baf727dcb016337a0734fbed812298443f4d715cd264736f6c63430008150033000000000000000000000000000000000000000000000000000000000000003c000000000000000000000000000000000000000000000000000000000000012c00000000000000000000000000000000000000000000000000000000000001f4000000000000000000000000000000000000000000000000000000000001889400000000000000000000000052edd1fc46e23b42cf84d8bc9b1ecf660fdb1c4a