0x60806040526006805464ffffffffff19164264ffffffffff1617905534801561002757600080fd5b50600061003b6001600160e01b036103f216565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35060018054336001600160a01b03199091161760ff60a01b191681556004805480830182557f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b60208083048201805460ff601f95861661010090810a82810219909316601e938402179093558654808901885584810486018054918816850a80840219909216600a9283021790558754808a01895585810487018054918916860a808502199092169183029190911790558754808a01895585810487018054918916860a808502199092169183029190911790558754808a01895585810487018054918916860a808502199092169183029190911790558754808a01895585810487018054918916860a8085021990921660089283021790558854808b018a5586810488018054918a16870a808602199092169183029190911790558854808b018a5586810488018054918a16870a808602199092169183029190911790558854808b018a5586810488018054918a16870a808602199092169183029190911790558854808b018a5586810488018054918a16870a80860219909216919092021790558754808a01895585810487018054918916860a8085021990921660059283021790558854808b018a5586810488018054918a16870a808602199092169183029190911790558854808b018a5586810488018054918a16870a808602199092169183029190911790558854808b018a5586810488018054918a16870a808602199092169183029190911790558854808b019099558589049096018054988816850a8084021990991698870298909817909755845480890186557f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db085820481018054928916860a808502199093166028909302929092179091558554808a01875585810482018054918916860a8085021990921691909402179092558454808901865584810483018054918816850a808402199092166014909202919091179055845480890190955592840401805493909416900a9081021990911692029190911790556003805480830182556000829052680ad78ebc5ac62000007fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b918201819055825480850184558201819055825480850184558201819055825493840190925591909101556103f6565b3390565b61211f806104056000396000f3fe6080604052600436106101bb5760003560e01c80638959af3c116100ec578063a9c3ac531161008a578063c864130f11610064578063c864130f14610726578063e7204ffb14610753578063f2fde38b14610768578063f340fa011461079b5761021e565b8063a9c3ac5314610659578063afbce3b9146106d2578063b7d9f0d2146106fc5761021e565b8063970d106f116100c6578063970d106f146105595780639a8318f41461056e578063a198341614610583578063a87430ba146105b25761021e565b80638959af3c146105055780638da5cb5b1461052f57806393e84cd9146105445761021e565b80635c975abb11610159578063715018a611610133578063715018a61461044957806374a88b8b1461045e57806374b95b2d146104975780638456cb59146104f05761021e565b80635c975abb146103945780636d5f6f11146103bd5780636da61d1e146103fd5761021e565b80631a975376116101955780631a97537614610306578063375e5c6c146103375780633ccfd60b1461036a5780633f4ba83a1461037f5761021e565b806315c43aaf14610223578063192ef492146102645780631959a0021461028b5761021e565b3661021e57600154600160a01b900460ff1615610212576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b61021c33346107c1565b005b600080fd5b34801561022f57600080fd5b50610238610c2c565b6040805194855264ffffffffff9093166020850152838301919091526060830152519081900360800190f35b34801561027057600080fd5b50610279610c8c565b60408051918252519081900360200190f35b34801561029757600080fd5b506102be600480360360208110156102ae57600080fd5b50356001600160a01b0316610c92565b604080516001600160a01b03909816885264ffffffffff9096166020880152868601949094526060860192909252608085015260a084015260c0830152519081900360e00190f35b34801561031257600080fd5b5061031b610ce9565b604080516001600160a01b039092168252519081900360200190f35b34801561034357600080fd5b5061021c6004803603602081101561035a57600080fd5b50356001600160a01b0316610cf8565b34801561037657600080fd5b5061021c610d79565b34801561038b57600080fd5b5061021c6111f7565b3480156103a057600080fd5b506103a9611259565b604080519115158252519081900360200190f35b3480156103c957600080fd5b506103e7600480360360208110156103e057600080fd5b5035611269565b6040805160ff9092168252519081900360200190f35b34801561040957600080fd5b506104306004803603602081101561042057600080fd5b50356001600160a01b031661129a565b6040805192835260208301919091528051918290030190f35b34801561045557600080fd5b5061021c6113bc565b34801561046a57600080fd5b506102796004803603604081101561048157600080fd5b50803590602001356001600160a01b031661145e565b3480156104a357600080fd5b506104ca600480360360208110156104ba57600080fd5b50356001600160a01b031661147b565b604080519485526020850193909352838301919091526060830152519081900360800190f35b3480156104fc57600080fd5b5061021c6114b1565b34801561051157600080fd5b506102796004803603602081101561052857600080fd5b5035611511565b34801561053b57600080fd5b5061031b61151d565b34801561055057600080fd5b5061021c61152c565b34801561056557600080fd5b50610279611599565b34801561057a57600080fd5b5061027961159f565b34801561058f57600080fd5b506105986115a5565b6040805164ffffffffff9092168252519081900360200190f35b3480156105be57600080fd5b506105e5600480360360208110156105d557600080fd5b50356001600160a01b03166115b2565b604080519d8e526001600160a01b03909c1660208e01528c8c019a909a5260608c019890985260808b019690965260a08a019490945260c089019290925260e088015261010087015264ffffffffff1661012086015261014085015261016084015261018083015251908190036101a00190f35b34801561066557600080fd5b5061066e61162a565b6040518083608080838360005b8381101561069357818101518382015260200161067b565b5050505090500182600460200280838360005b838110156106be5781810151838201526020016106a6565b505050509050019250505060405180910390f35b3480156106de57600080fd5b50610279600480360360208110156106f557600080fd5b50356116f9565b34801561070857600080fd5b506103e76004803603602081101561071f57600080fd5b5035611717565b34801561073257600080fd5b5061031b6004803603602081101561074957600080fd5b503560ff16611724565b34801561075f57600080fd5b5061021c61173f565b34801561077457600080fd5b5061021c6004803603602081101561078b57600080fd5b50356001600160a01b031661179f565b61021c600480360360208110156107b157600080fd5b50356001600160a01b0316611897565b6001600160a01b038281166000908152600260205260409020600101541615158061080457506107ef61151d565b6001600160a01b0316826001600160a01b0316145b610841576040805162461bcd60e51b81526020600482015260096024820152684e6f2075706c696e6560b81b604482015290519081900360640190fd5b6001600160a01b03821660009081526002602052604090206009015464ffffffffff1615610a2e576001600160a01b038216600090815260026020908152604091829020805460010181556007015482516322566bcf60e21b8152600481019190915291513092638959af3c926024808301939192829003018186803b1580156108ca57600080fd5b505afa1580156108de573d6000803e3d6000fd5b505050506040513d60208110156108f457600080fd5b50516001600160a01b038316600090815260026020526040902060030154101561095e576040805162461bcd60e51b81526020600482015260166024820152754465706f73697420616c72656164792065786973747360501b604482015290519081900360640190fd5b6001600160a01b03821660009081526002602052604090206007015481108015906109eb5750600380546001600160a01b038416600090815260026020526040902054600019909101106109ca576001600160a01b0383166000908152600260205260409020546109d2565b600354600019015b815481106109dc57fe5b90600052602060002001548111155b610a29576040805162461bcd60e51b815260206004820152600a60248201526910985908185b5bdd5b9d60b21b604482015290519081900360640190fd5b610a9c565b67016345785d8a00008110158015610a5e57506003600081548110610a4f57fe5b90600052602060002001548111155b610a9c576040805162461bcd60e51b815260206004820152600a60248201526910985908185b5bdd5b9d60b21b604482015290519081900360640190fd5b6001600160a01b03821660008181526002602090815260408083206003810184905560078101869055600881019390935560098301805464ffffffffff19164264ffffffffff16179055600a909201805485019055815184815291517f2cb77763bc1e8490c1a904905c4d74b4269919aca114464f4bb4d911e60de3649281900390910190a26001600160a01b038281166000908152600260205260409020600101541615610bb7576001600160a01b0382811660008181526002602090815260408083206001018054861684528184206004018054600a8904908101909155938590525481519384529051939416927fba5b08f0cddc64825b52c35c09323af810c1d2e29c97aba01a4ed25cfdc482d19281900390910190a35b610bc18282611900565b600654426201518064ffffffffff928316019091161015610be457610be4611b61565b610bec61151d565b6001600160a01b03166108fc606483049081150290604051600060405180830381858888f19350505050158015610c27573d6000803e3d6000fd5b505050565b600b5460065460085460075460009081526009602090815260408083207f13da86008ba1c6922daee3e07db95305ef49ebced9f5467a0b8613fcc6b343e3546001600160a01b0316845290915290205464ffffffffff9092169190919293565b60085481565b6001600160a01b039081166000908152600260205260409020600181015460098201546007830154600384015460048501546005860154600690960154949096169664ffffffffff90931695919490939192909190565b6001546001600160a01b031681565b6001546001600160a01b03163314610d57576040805162461bcd60e51b815260206004820181905260248201527f4163636573732064656e69656420286f6e6c79206772616e64206f776e657229604482015290519081900360640190fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b600154600160a01b900460ff1615610dcb576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b604080516336d30e8f60e11b8152336004820152815160009283923092636da61d1e92602480840193919291829003018186803b158015610e0b57600080fd5b505afa158015610e1f573d6000803e3d6000fd5b505050506040513d6040811015610e3557600080fd5b50805160209182015133600090815260029093526040909220600301549093509091508111610e9a576040805162461bcd60e51b815260206004820152600c60248201526b46756c6c207061796f75747360a01b604482015290519081900360640190fd5b8115610f0057336000908152600260205260409020600301548201811015610ed45733600090815260026020526040902060030154810391505b33600081815260026020526040902060088101805485019055600301805484019055610f009083611cc0565b3360009081526002602052604090206003015481118015610f3257503360009081526002602052604090206004015415155b15610f9a5733600090815260026020526040902060048101546003909101548101821015610f7157503360009081526002602052604090206003015481035b336000908152600260205260409020600481018054839003905560030180548201905591909101905b3360009081526002602052604090206003015481118015610fcc57503360009081526002602052604090206005015415155b15611034573360009081526002602052604090206005810154600390910154810182101561100b57503360009081526002602052604090206003015481035b336000908152600260205260409020600581018054839003905560030180548201905591909101905b336000908152600260205260409020600301548111801561106657503360009081526002602052604090206006015415155b156110ce57336000908152600260205260409020600681015460039091015481018210156110a557503360009081526002602052604090206003015481035b336000908152600260205260409020600681018054839003905560030180548201905591909101905b60008211611111576040805162461bcd60e51b815260206004820152600b60248201526a16995c9bc81c185e5bdd5d60aa1b604482015290519081900360640190fd5b33600081815260026020526040808220600b9081018054870190558054860190555184156108fc0291859190818181858888f1935050505015801561115a573d6000803e3d6000fd5b5060408051838152905133917f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364919081900360200190a23360009081526002602052604090206003015481116111f3573360008181526002602090815260409182902060030154825190815291517f97ddeb77c85e6a1dd99a34fe2bb1a4f9b211d5ffced7a707de9dbeb24363d0e49281900390910190a25b5050565b6111ff611df7565b6000546001600160a01b0390811691161461124f576040805162461bcd60e51b815260206004820181905260248201526000805160206120ca833981519152604482015290519081900360640190fd5b611257611dfb565b565b600154600160a01b900460ff1690565b6005818154811061127657fe5b9060005260206000209060209182820401919006915054906101000a900460ff1681565b6001600160a01b03811660009081526002602090815260408083206007015481516322566bcf60e21b81526004810191909152905183923092638959af3c9260248083019392829003018186803b1580156112f457600080fd5b505afa158015611308573d6000803e3d6000fd5b505050506040513d602081101561131e57600080fd5b50516001600160a01b0384166000908152600260205260409020600801549091508111156113b7576001600160a01b03831660009081526002602052604090206008810154600982015460079092015460646201518064ffffffffff9094164203939093040291909104819003925082018110156113b7576001600160a01b038316600090815260026020526040902060080154810391505b915091565b6113c4611df7565b6000546001600160a01b03908116911614611414576040805162461bcd60e51b815260206004820181905260248201526000805160206120ca833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b600960209081526000928352604080842090915290825290205481565b6001600160a01b0316600090815260026020819052604090912090810154600a820154600b830154600c90930154919390929190565b6114b9611df7565b6000546001600160a01b03908116911614611509576040805162461bcd60e51b815260206004820181905260248201526000805160206120ca833981519152604482015290519081900360640190fd5b611257611ea3565b600a601f919091020490565b6000546001600160a01b031690565b6001546001600160a01b0316331461158b576040805162461bcd60e51b815260206004820181905260248201527f4163636573732064656e69656420286f6e6c79206772616e64206f776e657229604482015290519081900360640190fd5b6001546001600160a01b0316ff5b60075481565b600b5481565b60065464ffffffffff1681565b600260208190526000918252604090912080546001820154928201546003830154600484015460058501546006860154600787015460088801546009890154600a8a0154600b8b0154600c909b0154999b6001600160a01b03169a989997989697959694959394929364ffffffffff9092169290918d565b611632612085565b61163a612085565b60005b60055460ff821610156116f45760ff81166000908152600a60205260409020546001600160a01b031661166f576116f4565b60ff81166000818152600a60205260409020546001600160a01b03169084906004811061169857fe5b6001600160a01b0392831660209182029290920191909152600754600090815260098252604080822060ff8616808452600a85528284205490951683529092522054908390600481106116e757fe5b602002015260010161163d565b509091565b6003818154811061170657fe5b600091825260209091200154905081565b6004818154811061127657fe5b600a602052600090815260409020546001600160a01b031681565b611747611df7565b6000546001600160a01b03908116911614611797576040805162461bcd60e51b815260206004820181905260248201526000805160206120ca833981519152604482015290519081900360640190fd5b611257611b61565b6117a7611df7565b6000546001600160a01b039081169116146117f7576040805162461bcd60e51b815260206004820181905260248201526000805160206120ca833981519152604482015290519081900360640190fd5b6001600160a01b03811661183c5760405162461bcd60e51b81526004018080602001828103825260268152602001806120a46026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b600154600160a01b900460ff16156118e9576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b6118f33382611f31565b6118fd33346107c1565b50565b60088054601483040190556001600160a01b03828116600090815260026020526040902060010154168061193457506111f3565b60075460009081526009602090815260408083206001600160a01b038516845290915281208054840190555b60055460ff82161015611b5b5760ff81166000908152600a60205260409020546001600160a01b038381169116141561199857611b5b565b60ff81166000908152600a60205260409020546001600160a01b03166119e85760ff81166000908152600a6020526040902080546001600160a01b0319166001600160a01b038416179055611b5b565b600754600090815260096020908152604080832060ff85168452600a8352818420546001600160a01b0390811685529252808320549185168352909120541115611b5357600181015b60055460ff82161015611ac55760ff81166000908152600a60205260409020546001600160a01b0384811691161415611abd57805b60055460ff821611611ab75760ff600182018181166000908152600a6020526040808220549390941681529290922080546001600160a01b0319166001600160a01b03909216919091179055611a66565b50611ac5565b600101611a31565b50600554600019015b8160ff168160ff161115611b225760ff60001982018181166000908152600a6020526040808220549390941681529290922080546001600160a01b0319166001600160a01b03909216919091179055611ace565b5060ff81166000908152600a6020526040902080546001600160a01b0319166001600160a01b038416179055611b5b565b600101611960565b50505050565b6006805464ffffffffff19164264ffffffffff16179055600780546001019055600854600a900460005b60055460ff82161015611c875760ff81166000908152600a60205260409020546001600160a01b0316611bbd57611c87565b6000606460058360ff1681548110611bd157fe5b60009182526020918290209181049091015460ff601f9092166101000a900416840281611bfa57fe5b60ff84166000818152600a6020818152604080842080546001600160a01b0390811686526002845282862060050180549990980498890190975560088054899003905594909352908152915481518581529151949550909216927fdbdfa5cb8586917247fbe7178cf53555d199e091a14b06f7de5a182ece2d453a9281900390910190a250600101611b8b565b5060005b60055460ff821610156111f35760ff81166000908152600a6020526040902080546001600160a01b0319169055600101611c8b565b6001600160a01b03808316600090815260026020526040812060010154909116905b60045460ff82161015611b5b576001600160a01b038216611d0257611b5b565b6001600160a01b0382166000908152600260208190526040909120015460ff600183011611611dce576000606460048360ff1681548110611d3f57fe5b60009182526020918290209181049091015460ff601f9092166101000a900416850281611d6857fe5b6001600160a01b03808616600081815260026020908152604091829020600601805496909504958601909455805185815290519495509189169390927f16e746f9be6c4b545700b04df27afb9fceabf59b94ef1c816e78a435059fabea928290030190a3505b6001600160a01b0391821660009081526002602052604090206001908101549092169101611ce2565b3390565b600154600160a01b900460ff16611e50576040805162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b604482015290519081900360640190fd5b6001805460ff60a01b191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa611e86611df7565b604080516001600160a01b039092168252519081900360200190a1565b600154600160a01b900460ff1615611ef5576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b6001805460ff60a01b1916600160a01b1790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258611e86611df7565b6001600160a01b0382811660009081526002602052604090206001015416158015611f6e5750816001600160a01b0316816001600160a01b031614155b8015611fbd57506001600160a01b03811660009081526002602052604090206009015464ffffffffff16151580611fbd5750611fa861151d565b6001600160a01b0316816001600160a01b0316145b156111f3576001600160a01b038281166000818152600260208190526040808320600190810180546001600160a01b03191696881696871790558584528184209092018054909201909155517f9f4d150e5193cfa9a87226111d3b60b624d97ccc056eeeac1569af1ea27bf6419190a360005b60045460ff82161015610c27576001600160a01b03821661205057610c27565b6001600160a01b039182166000908152600260205260409020600c810180546001908101909155908101549092169101612030565b6040518060800160405280600490602082028036833750919291505056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572a2646970667358221220900f1d62686d73d9436da27598a1842e17be338406c7c5515ed9c2c1fd04f58564736f6c63430006080033