0x608060405234801561000f575f80fd5b50600436106100e5575f3560e01c8063395093511161008857806395d89b411161006357806395d89b41146101f6578063a457c2d7146101fe578063a9059cbb14610211578063dd62ed3e14610224575f80fd5b806339509351146101845780636f307dc31461019757806370a08231146101ce575f80fd5b8063205c2878116100c3578063205c28781461013c57806323b872dd1461014f5780632f4f21e214610162578063313ce56714610175575f80fd5b806306fdde03146100e9578063095ea7b31461010757806318160ddd1461012a575b5f80fd5b6100f1610237565b6040516100fe9190610d36565b60405180910390f35b61011a610115366004610d83565b6102c7565b60405190151581526020016100fe565b6002545b6040519081526020016100fe565b61011a61014a366004610d83565b6102e0565b61011a61015d366004610dab565b610337565b61011a610170366004610d83565b61035a565b604051601281526020016100fe565b61011a610192366004610d83565b610413565b6040516001600160a01b037f000000000000000000000000cbb7c0000ab88b473b1f5afd9ef808440eed33bf1681526020016100fe565b61012e6101dc366004610de4565b6001600160a01b03165f9081526020819052604090205490565b6100f1610434565b61011a61020c366004610d83565b610443565b61011a61021f366004610d83565b6104bd565b61012e610232366004610e04565b6104ca565b60606003805461024690610e35565b80601f016020809104026020016040519081016040528092919081815260200182805461027290610e35565b80156102bd5780601f10610294576101008083540402835291602001916102bd565b820191905f5260205f20905b8154815290600101906020018083116102a057829003601f168201915b5050505050905090565b5f336102d48185856104f4565b60019150505b92915050565b5f6102eb3383610618565b5f6102f7600a80610f61565b6103019084610f6c565b90506102d46001600160a01b037f000000000000000000000000cbb7c0000ab88b473b1f5afd9ef808440eed33bf168583610745565b5f336103448582856107a8565b61034f858585610820565b506001949350505050565b5f333081036103bc5760405162461bcd60e51b815260206004820152602360248201527f4552433230577261707065723a20777261707065722063616e2774206465706f6044820152621cda5d60ea1b60648201526084015b60405180910390fd5b6103f16001600160a01b037f000000000000000000000000cbb7c0000ab88b473b1f5afd9ef808440eed33bf168230866109c2565b5f6103fd600a80610f61565b6104079085610f8b565b905061034f85826109fa565b5f336102d481858561042583836104ca565b61042f9190610fa2565b6104f4565b60606004805461024690610e35565b5f338161045082866104ca565b9050838110156104b05760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016103b3565b61034f82868684036104f4565b5f336102d4818585610820565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166105565760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016103b3565b6001600160a01b0382166105b75760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016103b3565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b0382166106785760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016103b3565b6001600160a01b0382165f90815260208190526040902054818110156106eb5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016103b3565b6001600160a01b0383165f818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910161060b565b505050565b6040516001600160a01b03831660248201526044810182905261074090849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152610ab7565b5f6107b384846104ca565b90505f19811461081a578181101561080d5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016103b3565b61081a84848484036104f4565b50505050565b6001600160a01b0383166108845760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016103b3565b6001600160a01b0382166108e65760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016103b3565b6001600160a01b0383165f908152602081905260409020548181101561095d5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016103b3565b6001600160a01b038481165f81815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a361081a565b6040516001600160a01b038085166024830152831660448201526064810182905261081a9085906323b872dd60e01b90608401610771565b6001600160a01b038216610a505760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016103b3565b8060025f828254610a619190610fa2565b90915550506001600160a01b0382165f81815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b5f610b0b826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316610b8a9092919063ffffffff16565b905080515f1480610b2b575080806020019051810190610b2b9190610fb5565b6107405760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016103b3565b6060610b9884845f85610ba0565b949350505050565b606082471015610c015760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016103b3565b5f80866001600160a01b03168587604051610c1c9190610fd4565b5f6040518083038185875af1925050503d805f8114610c56576040519150601f19603f3d011682016040523d82523d5f602084013e610c5b565b606091505b5091509150610c6c87838387610c77565b979650505050505050565b60608315610ce55782515f03610cde576001600160a01b0385163b610cde5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016103b3565b5081610b98565b610b988383815115610cfa5781518083602001fd5b8060405162461bcd60e51b81526004016103b39190610d36565b5f5b83811015610d2e578181015183820152602001610d16565b50505f910152565b602081525f8251806020840152610d54816040850160208701610d14565b601f01601f19169190910160400192915050565b80356001600160a01b0381168114610d7e575f80fd5b919050565b5f8060408385031215610d94575f80fd5b610d9d83610d68565b946020939093013593505050565b5f805f60608486031215610dbd575f80fd5b610dc684610d68565b9250610dd460208501610d68565b9150604084013590509250925092565b5f60208284031215610df4575f80fd5b610dfd82610d68565b9392505050565b5f8060408385031215610e15575f80fd5b610e1e83610d68565b9150610e2c60208401610d68565b90509250929050565b600181811c90821680610e4957607f821691505b602082108103610e6757634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115610ebb57815f1904821115610ea157610ea1610e6d565b80851615610eae57918102915b93841c9390800290610e86565b509250929050565b5f82610ed1575060016102da565b81610edd57505f6102da565b8160018114610ef35760028114610efd57610f19565b60019150506102da565b60ff841115610f0e57610f0e610e6d565b50506001821b6102da565b5060208310610133831016604e8410600b8410161715610f3c575081810a6102da565b610f468383610e81565b805f1904821115610f5957610f59610e6d565b029392505050565b5f610dfd8383610ec3565b5f82610f8657634e487b7160e01b5f52601260045260245ffd5b500490565b80820281158282048414176102da576102da610e6d565b808201808211156102da576102da610e6d565b5f60208284031215610fc5575f80fd5b81518015158114610dfd575f80fd5b5f8251610fe5818460208701610d14565b919091019291505056fea26469706673582212208b3847aedba97c599a1d068a4d32ccac3809bb379ccafec3d0af9f110888153964736f6c63430008180033
0x60a060405234801562000010575f80fd5b5073cbb7c0000ab88b473b1f5afd9ef808440eed33bf6040518060400160405280600d81526020016c5772617070656420636242544360981b815250604051806040016040528060078152602001660c6c484a88662760cb1b81525081600390816200007d919062000253565b5060046200008c828262000253565b5050306001600160a01b038316039050620000ee5760405162461bcd60e51b815260206004820152601e60248201527f4552433230577261707065723a2063616e6e6f742073656c662077726170000060448201526064015b60405180910390fd5b6001600160a01b03166080526040805163313ce56760e01b8152905173cbb7c0000ab88b473b1f5afd9ef808440eed33bf9163313ce5679160048083019260209291908290030181865afa15801562000149573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200016f91906200031f565b60ff16600814620001af5760405162461bcd60e51b815260206004820152600960248201526821444543494d414c5360b81b6044820152606401620000e5565b62000348565b634e487b7160e01b5f52604160045260245ffd5b600181811c90821680620001de57607f821691505b602082108103620001fd57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f8211156200024e57805f5260205f20601f840160051c810160208510156200022a5750805b601f840160051c820191505b818110156200024b575f815560010162000236565b50505b505050565b81516001600160401b038111156200026f576200026f620001b5565b6200028781620002808454620001c9565b8462000203565b602080601f831160018114620002bd575f8415620002a55750858301515b5f19600386901b1c1916600185901b17855562000317565b5f85815260208120601f198616915b82811015620002ed57888601518255948401946001909101908401620002cc565b50858210156200030b57878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b5f6020828403121562000330575f80fd5b815160ff8116811462000341575f80fd5b9392505050565b6080516110256200036f5f395f81816101a40152818161031001526103c901526110255ff3fe608060405234801561000f575f80fd5b50600436106100e5575f3560e01c8063395093511161008857806395d89b411161006357806395d89b41146101f6578063a457c2d7146101fe578063a9059cbb14610211578063dd62ed3e14610224575f80fd5b806339509351146101845780636f307dc31461019757806370a08231146101ce575f80fd5b8063205c2878116100c3578063205c28781461013c57806323b872dd1461014f5780632f4f21e214610162578063313ce56714610175575f80fd5b806306fdde03146100e9578063095ea7b31461010757806318160ddd1461012a575b5f80fd5b6100f1610237565b6040516100fe9190610d36565b60405180910390f35b61011a610115366004610d83565b6102c7565b60405190151581526020016100fe565b6002545b6040519081526020016100fe565b61011a61014a366004610d83565b6102e0565b61011a61015d366004610dab565b610337565b61011a610170366004610d83565b61035a565b604051601281526020016100fe565b61011a610192366004610d83565b610413565b6040516001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001681526020016100fe565b61012e6101dc366004610de4565b6001600160a01b03165f9081526020819052604090205490565b6100f1610434565b61011a61020c366004610d83565b610443565b61011a61021f366004610d83565b6104bd565b61012e610232366004610e04565b6104ca565b60606003805461024690610e35565b80601f016020809104026020016040519081016040528092919081815260200182805461027290610e35565b80156102bd5780601f10610294576101008083540402835291602001916102bd565b820191905f5260205f20905b8154815290600101906020018083116102a057829003601f168201915b5050505050905090565b5f336102d48185856104f4565b60019150505b92915050565b5f6102eb3383610618565b5f6102f7600a80610f61565b6103019084610f6c565b90506102d46001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168583610745565b5f336103448582856107a8565b61034f858585610820565b506001949350505050565b5f333081036103bc5760405162461bcd60e51b815260206004820152602360248201527f4552433230577261707065723a20777261707065722063616e2774206465706f6044820152621cda5d60ea1b60648201526084015b60405180910390fd5b6103f16001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168230866109c2565b5f6103fd600a80610f61565b6104079085610f8b565b905061034f85826109fa565b5f336102d481858561042583836104ca565b61042f9190610fa2565b6104f4565b60606004805461024690610e35565b5f338161045082866104ca565b9050838110156104b05760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016103b3565b61034f82868684036104f4565b5f336102d4818585610820565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166105565760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016103b3565b6001600160a01b0382166105b75760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016103b3565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b0382166106785760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016103b3565b6001600160a01b0382165f90815260208190526040902054818110156106eb5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016103b3565b6001600160a01b0383165f818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910161060b565b505050565b6040516001600160a01b03831660248201526044810182905261074090849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152610ab7565b5f6107b384846104ca565b90505f19811461081a578181101561080d5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016103b3565b61081a84848484036104f4565b50505050565b6001600160a01b0383166108845760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016103b3565b6001600160a01b0382166108e65760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016103b3565b6001600160a01b0383165f908152602081905260409020548181101561095d5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016103b3565b6001600160a01b038481165f81815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a361081a565b6040516001600160a01b038085166024830152831660448201526064810182905261081a9085906323b872dd60e01b90608401610771565b6001600160a01b038216610a505760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016103b3565b8060025f828254610a619190610fa2565b90915550506001600160a01b0382165f81815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b5f610b0b826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316610b8a9092919063ffffffff16565b905080515f1480610b2b575080806020019051810190610b2b9190610fb5565b6107405760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016103b3565b6060610b9884845f85610ba0565b949350505050565b606082471015610c015760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016103b3565b5f80866001600160a01b03168587604051610c1c9190610fd4565b5f6040518083038185875af1925050503d805f8114610c56576040519150601f19603f3d011682016040523d82523d5f602084013e610c5b565b606091505b5091509150610c6c87838387610c77565b979650505050505050565b60608315610ce55782515f03610cde576001600160a01b0385163b610cde5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016103b3565b5081610b98565b610b988383815115610cfa5781518083602001fd5b8060405162461bcd60e51b81526004016103b39190610d36565b5f5b83811015610d2e578181015183820152602001610d16565b50505f910152565b602081525f8251806020840152610d54816040850160208701610d14565b601f01601f19169190910160400192915050565b80356001600160a01b0381168114610d7e575f80fd5b919050565b5f8060408385031215610d94575f80fd5b610d9d83610d68565b946020939093013593505050565b5f805f60608486031215610dbd575f80fd5b610dc684610d68565b9250610dd460208501610d68565b9150604084013590509250925092565b5f60208284031215610df4575f80fd5b610dfd82610d68565b9392505050565b5f8060408385031215610e15575f80fd5b610e1e83610d68565b9150610e2c60208401610d68565b90509250929050565b600181811c90821680610e4957607f821691505b602082108103610e6757634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115610ebb57815f1904821115610ea157610ea1610e6d565b80851615610eae57918102915b93841c9390800290610e86565b509250929050565b5f82610ed1575060016102da565b81610edd57505f6102da565b8160018114610ef35760028114610efd57610f19565b60019150506102da565b60ff841115610f0e57610f0e610e6d565b50506001821b6102da565b5060208310610133831016604e8410600b8410161715610f3c575081810a6102da565b610f468383610e81565b805f1904821115610f5957610f59610e6d565b029392505050565b5f610dfd8383610ec3565b5f82610f8657634e487b7160e01b5f52601260045260245ffd5b500490565b80820281158282048414176102da576102da610e6d565b808201808211156102da576102da610e6d565b5f60208284031215610fc5575f80fd5b81518015158114610dfd575f80fd5b5f8251610fe5818460208701610d14565b919091019291505056fea26469706673582212208b3847aedba97c599a1d068a4d32ccac3809bb379ccafec3d0af9f110888153964736f6c63430008180033