0x61016060405262278d006006556007805463ffffffff1916811790553480156200002857600080fd5b50604051620020b5380380620020b58339810160408190526200004b91620002ac565b604080518082018252601981527f53776f7264732044756e67656f6e73204e4654205374616b650000000000000060208083019190915282518084019093526002835261763160f01b90830152903380620000c157604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b620000cc81620001c3565b50620000da82600162000213565b61012052620000eb81600262000213565b61014052815160208084019190912060e052815190820120610100524660a0526200017960e05161010051604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201529081019290925260608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b60805250503060c052600380546001600160a01b03199081166001600160a01b039384161790915560058054821694831694909417909355600480549093169116179055620004df565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600060208351101562000233576200022b836200024c565b905062000246565b816200024084826200039d565b5060ff90505b92915050565b600080829050601f815111156200027a578260405163305a27a960e01b8152600401620000b8919062000469565b80516200028782620004ba565b179392505050565b80516001600160a01b0381168114620002a757600080fd5b919050565b600080600060608486031215620002c257600080fd5b620002cd846200028f565b9250620002dd602085016200028f565b9150620002ed604085016200028f565b90509250925092565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200032157607f821691505b6020821081036200034257634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111562000398576000816000526020600020601f850160051c81016020861015620003735750805b601f850160051c820191505b8181101562000394578281556001016200037f565b5050505b505050565b81516001600160401b03811115620003b957620003b9620002f6565b620003d181620003ca84546200030c565b8462000348565b602080601f831160018114620004095760008415620003f05750858301515b600019600386901b1c1916600185901b17855562000394565b600085815260208120601f198616915b828110156200043a5788860151825594840194600190910190840162000419565b5085821015620004595787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60006020808352835180602085015260005b8181101562000499578581018301518582016040015282016200047b565b506000604082860101526040601f19601f8301168501019250505092915050565b80516020808301519190811015620003425760001960209190910360031b1b16919050565b60805160a05160c05160e051610100516101205161014051611b7b6200053a600039600061113a01526000611108015260006113f9015260006113d10152600061132c01526000611356015260006113800152611b7b6000f3fe608060405234801561001057600080fd5b50600436106101735760003560e01c80636637c3b8116100de57806384b0196e11610097578063e78ef3ff11610071578063e78ef3ff146103fc578063f2fde38b1461040c578063f56e9c661461041f578063fda49eb41461043257600080fd5b806384b0196e146103b05780638da5cb5b146103cb578063b41a6387146103dc57600080fd5b80636637c3b8146102f9578063671d64291461030c5780636c19e7831461031f578063715018a61461033257806378b38f361461033a5780637ecebe001461039057600080fd5b806333b69c4c1161013057806333b69c4c1461028457806347ccca02146102a457806349532418146102b75780634d65b976146102ca578063584b62a1146102d35780635d7e9758146102e657600080fd5b8063025e7c271461017857806303e05b82146101be578063150b7a02146101d3578063238ac933146101ff5780632c0209f5146102125780632d0335ab1461024d575b600080fd5b6101a161018636600461168a565b6008602052600090815260409020546001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6101d16101cc3660046116bc565b610445565b005b6101e66101e13660046116f3565b610469565b6040516001600160e01b031990911681526020016101b5565b6004546101a1906001600160a01b031681565b61023861022036600461168a565b600c6020526000908152604090205463ffffffff1681565b60405163ffffffff90911681526020016101b5565b61027661025b366004611792565b6001600160a01b03166000908152600b602052604090205490565b6040519081526020016101b5565b610297610292366004611792565b6104e1565b6040516101b591906117eb565b6003546101a1906001600160a01b031681565b6101d16102c5366004611814565b61054d565b61027660065481565b6102766102e1366004611902565b6109a6565b6101d16102f436600461168a565b6109d7565b6101d161030736600461192e565b6109e4565b6101d161031a366004611792565b610d78565b6101d161032d366004611792565b610db5565b6101d1610df2565b61037161034836600461168a565b6000908152600860209081526040808320546009909252909120546001600160a01b0390911691565b604080516001600160a01b0390931683526020830191909152016101b5565b61027661039e366004611792565b600b6020526000908152604090205481565b6103b8610e06565b6040516101b597969594939291906119a0565b6000546001600160a01b03166101a1565b6102766103ea36600461168a565b60096020526000908152604090205481565b6007546102389063ffffffff1681565b6101d161041a366004611792565b610e4c565b6101d161042d366004611792565b610e8a565b6005546101a1906001600160a01b031681565b61044d610ec7565b6007805463ffffffff191663ffffffff92909216919091179055565b60035460009033906001600160a01b031681146104c45760405162461bcd60e51b81526020600482015260146024820152731b5d5cdd081899481b999d0818dbdb9d1c9858dd60621b60448201526064015b60405180910390fd5b6104ce8686610ef4565b50630a85bd0160e11b9695505050505050565b6001600160a01b0381166000908152600a602090815260409182902080548351818402810184019094528084526060939283018282801561054157602002820191906000526020600020905b81548152602001906001019080831161052d575b50505050509050919050565b428263ffffffff161161059a5760405162461bcd60e51b8152602060048201526015602482015274534e444e46545374616b653a20657870697265642160581b60448201526064016104bb565b60008681526008602052604090205433906001600160a01b0316811415806105dc57506000868152600860205260409020546001600160a01b03828116911614155b8061060157506000858152600860205260409020546001600160a01b03828116911614155b156106625760405162461bcd60e51b815260206004820152602b60248201527f534e444e46545374616b653a206e6674206e6f74207374616b6564206f72207760448201526a726f6e67206f776e65722160a81b60648201526084016104bb565b6007546000888152600c602052604090205463ffffffff91821691161015806106a557506007546000878152600c602052604090205463ffffffff918216911610155b806106ca57506007546000868152600c602052604090205463ffffffff918216911610155b156107175760405162461bcd60e51b815260206004820152601a60248201527f534e444e46545374616b653a206f766572204d4158425245454400000000000060448201526064016104bb565b6040805160e0810182526001600160a01b03831680825260208083018b90528284018a9052606083018990526000918252600b90529190912054608082015263ffffffff80851660a0830152851660c08201526107748184611073565b6107c05760405162461bcd60e51b815260206004820181905260248201527f534e444e46545374616b653a207369676e61747572652069732077726f6e672160448201526064016104bb565b60005b8563ffffffff168163ffffffff1610156108ac576003546040516340d097c360e01b81526001600160a01b03858116600483015260009216906340d097c3906024016020604051808303816000875af1158015610824573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108489190611a10565b604080516001600160a01b0387168152602081018390529081018c9052606081018b9052608081018a90529091507f503a84784644c0f663f06114e7c6f2a39e3927fde8a67ab65a1d949a3d2c087e9060a00160405180910390a1506001016107c3565b506001600160a01b0382166000908152600b602052604081208054600192906108d6908490611a3f565b90915550506000888152600c6020526040812080546001929061090090849063ffffffff16611a52565b82546101009290920a63ffffffff8181021990931691831602179091556000898152600c60205260408120805460019450909261093f91859116611a52565b82546101009290920a63ffffffff8181021990931691831602179091556000888152600c60205260408120805460019450909261097e91859116611a52565b92506101000a81548163ffffffff021916908363ffffffff1602179055505050505050505050565b600a60205281600052604060002081815481106109c257600080fd5b90600052602060002001600091509150505481565b6109df610ec7565b600655565b428163ffffffff1611610a315760405162461bcd60e51b8152602060048201526015602482015274534e444e46545374616b653a20657870697265642160581b60448201526064016104bb565b60008281526008602052604090205433906001600160a01b0316808214610aaa5760405162461bcd60e51b815260206004820152602760248201527f534e444e46545374616b653a2077726f6e67206f776e6572206f72206e6f74206044820152667374616b65642160c81b60648201526084016104bb565b6000848152600960205260409020548015801590610ac85750804210155b610b145760405162461bcd60e51b815260206004820152601960248201527f49742773206e6f742079657420756e7374616b652074696d650000000000000060448201526064016104bb565b6003546040516323b872dd60e01b81523060048201526001600160a01b03848116602483015260448201889052909116906323b872dd90606401600060405180830381600087803b158015610b6857600080fd5b505af1158015610b7c573d6000803e3d6000fd5b505050506001600160a01b0382166000908152600a6020908152604080832080548251818502810185019093528083529192909190830182828015610be057602002820191906000526020600020905b815481526020019060010190808311610bcc575b505050505090506000815190506000805b828163ffffffff161015610c3f5788848263ffffffff1681518110610c1857610c18611a76565b602002602001015103610c2d57809150610c3f565b80610c3781611a8c565b915050610bf1565b506001600160a01b0385166000908152600a60205260409020610c63600184611aaf565b81548110610c7357610c73611a76565b9060005260206000200154600a6000876001600160a01b03166001600160a01b031681526020019081526020016000208263ffffffff1681548110610cba57610cba611a76565b60009182526020808320909101929092556001600160a01b0387168152600a90915260409020805480610cef57610cef611ac2565b60008281526020808220600019908401810183905590920190925589825260088152604080832080546001600160a01b0319169055600982528083209290925581516001600160a01b03881681529081018a90527fe8b40fda281c6bb8d29a090b37522bcc49728e60bf2bbbff36ea712ff1b498a5910160405180910390a15050505050505050565b610d80610ec7565b6001600160a01b038116610d9357600080fd5b600580546001600160a01b0319166001600160a01b0392909216919091179055565b610dbd610ec7565b6001600160a01b038116610dd057600080fd5b600480546001600160a01b0319166001600160a01b0392909216919091179055565b610dfa610ec7565b610e0460006110b1565b565b600060608060008060006060610e1a611101565b610e22611133565b60408051600080825260208201909252600f60f81b9b939a50919850469750309650945092509050565b610e54610ec7565b6001600160a01b038116610e7e57604051631e4fbdf760e01b8152600060048201526024016104bb565b610e87816110b1565b50565b610e92610ec7565b6001600160a01b038116610ea557600080fd5b600380546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314610e045760405163118cdaa760e01b81523360048201526024016104bb565b6000818152600860205260409020546001600160a01b0316158015610f8c57506003546040516331a9108f60e11b81526004810183905230916001600160a01b031690636352211e90602401602060405180830381865afa158015610f5d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f819190611ad8565b6001600160a01b0316145b610fc85760405162461bcd60e51b815260206004820152600d60248201526c496e76616c6964205374616b6560981b60448201526064016104bb565b600654610fd59042611a3f565b60008281526009602081815260408084209485556008825280842080546001600160a01b0319166001600160a01b038916908117909155808552600a835281852080546001810182559086528386200187905593869052918152925481519283529282018490528101919091527f2209f5ab1e50b2a6cab82d8f63686a6991f8d51072e1c8c6e752570697c29c469060600160405180910390a15050565b60008061108761108285611160565b61121d565b90506000611095828561124a565b6004546001600160a01b03918216911614925050505b92915050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b606061112e7f00000000000000000000000000000000000000000000000000000000000000006001611274565b905090565b606061112e7f00000000000000000000000000000000000000000000000000000000000000006002611274565b60007f59d4e2d4b69257c04c82c4aa35a1c0244e4d511ffbfce11cc13523b585cdeec4826000015183602001518460400151856060015186608001518760a001518860c001516040516020016112009897969594939291909788526001600160a01b0396909616602088015260408701949094526060860192909252608085015260a084015263ffffffff90811660c08401521660e08201526101000190565b604051602081830303815290604052805190602001209050919050565b60006110ab61122a61131f565b8360405161190160f01b8152600281019290925260228201526042902090565b60008060008061125a868661144a565b92509250925061126a8282611497565b5090949350505050565b606060ff831461128e5761128783611554565b90506110ab565b81805461129a90611af5565b80601f01602080910402602001604051908101604052809291908181526020018280546112c690611af5565b80156113135780601f106112e857610100808354040283529160200191611313565b820191906000526020600020905b8154815290600101906020018083116112f657829003601f168201915b505050505090506110ab565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614801561137857507f000000000000000000000000000000000000000000000000000000000000000046145b156113a257507f000000000000000000000000000000000000000000000000000000000000000090565b61112e604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b600080600083516041036114845760208401516040850151606086015160001a61147688828585611593565b955095509550505050611490565b50508151600091506002905b9250925092565b60008260038111156114ab576114ab611b2f565b036114b4575050565b60018260038111156114c8576114c8611b2f565b036114e65760405163f645eedf60e01b815260040160405180910390fd5b60028260038111156114fa576114fa611b2f565b0361151b5760405163fce698f760e01b8152600481018290526024016104bb565b600382600381111561152f5761152f611b2f565b03611550576040516335e2f38360e21b8152600481018290526024016104bb565b5050565b6060600061156183611662565b604080516020808252818301909252919250600091906020820181803683375050509182525060208101929092525090565b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411156115ce5750600091506003905082611658565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015611622573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661164e57506000925060019150829050611658565b9250600091508190505b9450945094915050565b600060ff8216601f8111156110ab57604051632cd44ac360e21b815260040160405180910390fd5b60006020828403121561169c57600080fd5b5035919050565b803563ffffffff811681146116b757600080fd5b919050565b6000602082840312156116ce57600080fd5b6116d7826116a3565b9392505050565b6001600160a01b0381168114610e8757600080fd5b60008060008060006080868803121561170b57600080fd5b8535611716816116de565b94506020860135611726816116de565b935060408601359250606086013567ffffffffffffffff8082111561174a57600080fd5b818801915088601f83011261175e57600080fd5b81358181111561176d57600080fd5b89602082850101111561177f57600080fd5b9699959850939650602001949392505050565b6000602082840312156117a457600080fd5b81356116d7816116de565b60008151808452602080850194506020840160005b838110156117e0578151875295820195908201906001016117c4565b509495945050505050565b6020815260006116d760208301846117af565b634e487b7160e01b600052604160045260246000fd5b60008060008060008060c0878903121561182d57600080fd5b86359550602087013594506040870135935061184b606088016116a3565b9250611859608088016116a3565b915060a087013567ffffffffffffffff8082111561187657600080fd5b818901915089601f83011261188a57600080fd5b81358181111561189c5761189c6117fe565b604051601f8201601f19908116603f011681019083821181831017156118c4576118c46117fe565b816040528281528c60208487010111156118dd57600080fd5b8260208601602083013760006020848301015280955050505050509295509295509295565b6000806040838503121561191557600080fd5b8235611920816116de565b946020939093013593505050565b6000806040838503121561194157600080fd5b82359150611951602084016116a3565b90509250929050565b6000815180845260005b8181101561198057602081850181015186830182015201611964565b506000602082860101526020601f19601f83011685010191505092915050565b60ff60f81b8816815260e0602082015260006119bf60e083018961195a565b82810360408401526119d1818961195a565b606084018890526001600160a01b038716608085015260a0840186905283810360c08501529050611a0281856117af565b9a9950505050505050505050565b600060208284031215611a2257600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b808201808211156110ab576110ab611a29565b63ffffffff818116838216019080821115611a6f57611a6f611a29565b5092915050565b634e487b7160e01b600052603260045260246000fd5b600063ffffffff808316818103611aa557611aa5611a29565b6001019392505050565b818103818111156110ab576110ab611a29565b634e487b7160e01b600052603160045260246000fd5b600060208284031215611aea57600080fd5b81516116d7816116de565b600181811c90821680611b0957607f821691505b602082108103611b2957634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052602160045260246000fdfea2646970667358221220778a35cfc42fb44d400b3afccd99001337f8a5ef22d22563e28b17547c1d3dd064736f6c634300081800330000000000000000000000005c2f4549ea428012e4aca86a89993032ec822a0d0000000000000000000000001d4f4c4c1247063593256cfa0845a9181d6731b60000000000000000000000004aa33eea4159e7451c63569331c81c143ca2c382