0x6080604052600436106100435760003560e01c80635c60da1b14610143578063715018a6146101ba5780638da5cb5b146101cf578063f2fde38b146101fa5761004a565b3661004a57005b600080357fffffffff000000000000000000000000000000000000000000000000000000001681527fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c602052604090205473ffffffffffffffffffffffffffffffffffffffff168061011d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4469616d6f6e643a2046756e6374696f6e20646f6573206e6f7420657869737460448201526064015b60405180910390fd5b3660008037600080366000845af43d6000803e80801561013c573d6000f35b3d6000fd5b005b34801561014f57600080fd5b507f2ad3e90873cbe86f6a024e2d91b7abbabc6ce35c355c15912cb7d7df99da236354640100000000900473ffffffffffffffffffffffffffffffffffffffff165b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b3480156101c657600080fd5b5061014161023e565b3480156101db57600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff16610191565b34801561020657600080fd5b506101416102153660046108af565b610252565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c90565b610246610778565b61025060006107f9565b565b61025a610778565b73ffffffffffffffffffffffffffffffffffffffff81166102fd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610114565b610306816107f9565b50565b7f2ad3e90873cbe86f6a024e2d91b7abbabc6ce35c355c15912cb7d7df99da235b90565b60008151116103be576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f4c69624469616d6f6e644375743a204e6f2073656c6563746f727320696e206660448201527f6163657420746f206375740000000000000000000000000000000000000000006064820152608401610114565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c73ffffffffffffffffffffffffffffffffffffffff8316610482576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f4c69624469616d6f6e644375743a204164642066616365742063616e2774206260448201527f65206164647265737328302900000000000000000000000000000000000000006064820152608401610114565b73ffffffffffffffffffffffffffffffffffffffff831660009081526001820160205260408120549061ffff82169003610576576104d884604051806060016040528060248152602001610a176024913961086e565b60028201805473ffffffffffffffffffffffffffffffffffffffff861660008181526001808701602090815260408320820180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00001661ffff90961695909517909455845490810185559381529190912090910180547fffffffffffffffffffffffff00000000000000000000000000000000000000001690911790555b60005b8351811015610771576000848281518110610596576105966108ec565b6020908102919091018101517fffffffff00000000000000000000000000000000000000000000000000000000811660009081529186905260409091205490915073ffffffffffffffffffffffffffffffffffffffff16801561067b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603560248201527f4c69624469616d6f6e644375743a2043616e2774206164642066756e6374696f60448201527f6e207468617420616c72656164792065786973747300000000000000000000006064820152608401610114565b73ffffffffffffffffffffffffffffffffffffffff871660008181526001878101602090815260408084208054938401815584528184206008840401805463ffffffff60079095166004026101000a948502191660e089901c94909402939093179092557fffffffff0000000000000000000000000000000000000000000000000000000086168352889052902080547fffffffffffffffffffff00000000000000000000000000000000000000000000169091177401000000000000000000000000000000000000000061ffff871602179055836107598161094a565b945050505080806107699061096b565b915050610579565b5050505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610250576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610114565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b813b81816108a9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161011491906109a3565b50505050565b6000602082840312156108c157600080fd5b813573ffffffffffffffffffffffffffffffffffffffff811681146108e557600080fd5b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061ffff8083168181036109615761096161091b565b6001019392505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361099c5761099c61091b565b5060010190565b600060208083528351808285015260005b818110156109d0578581018301518582016040015282016109b4565b818111156109e2576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01692909201604001939250505056fe4c69624469616d6f6e644375743a204e657720666163657420686173206e6f20636f6465a26469706673582212201e8efb3ade1498dd81c271625ade112a67c3e9dc69fa0db7b2a7093507d8bc8464736f6c634300080d0033
0x60806040523480156200001157600080fd5b50604051620014ff380380620014ff833981016040819052620000349162000859565b6200003f336200038f565b600062000056620003df60201b620003091760201c565b865190915062000070906004830190602089019062000751565b506102ee60028201556007810180546006830180546001600160a01b038881166001600160a01b03199283161790925560088501805461045760ab1b63ffffffff60a81b1961018b60c91b7fffffff00000000ffffffffff0000000000000000000000000000000000000000909716868e1617969096179590951694909417909455600060058601819055918616640100000000026001600160c01b0319909316929092176001179092556009830180549091166e6c3852cbef3e08e8df289169ede581179055620001506200021a62000403602090811b91909117901c565b6301ffc9a760e01b600090815260038201602090815260408083208054600160ff1991821681179092556307e4c70760e21b855282852080548216831790556348e2b09360e01b855282852080548216831790556380ac58cd60e01b85528285208054821683179055635b5e139f60e01b8552828520805482168317905563152a902d60e11b8552828520805490911690911790558051600680825260e0820190925293945091929190820160c080368337019050509050631f931c1c60e01b816000815181106200022657620002266200095e565b6001600160e01b0319909216602092830291909101909101528051637a0ed62760e01b90829060019081106200026057620002606200095e565b6001600160e01b03199092166020928302919091019091015280516356fe50af60e11b90829060029081106200029a576200029a6200095e565b6001600160e01b03199092166020928302919091019091015280516314bbdacb60e21b9082906003908110620002d457620002d46200095e565b6001600160e01b03199092166020928302919091019091015280516366ffd66360e11b90829060049081106200030e576200030e6200095e565b6001600160e01b03199092166020928302919091019091015280516301ffc9a760e01b90829060059081106200034857620003486200095e565b60200260200101906001600160e01b03191690816001600160e01b031916815250506200038185826200041660201b6200032d1760201c565b505050505050505062000a3b565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b7f2ad3e90873cbe86f6a024e2d91b7abbabc6ce35c355c15912cb7d7df99da235b90565b600080516020620014bb83398151915290565b6000815111620004815760405162461bcd60e51b815260206004820152602b60248201527f4c69624469616d6f6e644375743a204e6f2073656c6563746f727320696e206660448201526a1858d95d081d1bc818dd5d60aa1b60648201526084015b60405180910390fd5b600080516020620014bb8339815191526001600160a01b038316620004fe5760405162461bcd60e51b815260206004820152602c60248201527f4c69624469616d6f6e644375743a204164642066616365742063616e2774206260448201526b65206164647265737328302960a01b606482015260840162000478565b6001600160a01b03831660009081526001820160205260408120549061ffff82169003620005a7576200054b84604051806060016040528060248152602001620014db6024913962000727565b6002820180546001600160a01b038616600081815260018087016020908152604083208201805461ffff191661ffff90961695909517909455845490810185559381529190912090910180546001600160a01b03191690911790555b60005b835181101562000720576000848281518110620005cb57620005cb6200095e565b6020908102919091018101516001600160e01b031981166000908152918690526040909120549091506001600160a01b03168015620006735760405162461bcd60e51b815260206004820152603560248201527f4c69624469616d6f6e644375743a2043616e2774206164642066756e6374696f60448201527f6e207468617420616c7265616479206578697374730000000000000000000000606482015260840162000478565b6001600160a01b03871660008181526001878101602090815260408084208054938401815584528184206008840401805463ffffffff60079095166004026101000a948502191660e089901c94909402939093179092556001600160e01b031986168352889052902080546001600160b01b031916909117600160a01b61ffff8716021790558362000705816200098a565b945050505080806200071790620009ae565b915050620005aa565b5050505050565b813b81816200074b5760405162461bcd60e51b8152600401620004789190620009ca565b50505050565b8280546200075f90620009ff565b90600052602060002090601f016020900481019282620007835760008555620007ce565b82601f106200079e57805160ff1916838001178555620007ce565b82800160010185558215620007ce579182015b82811115620007ce578251825591602001919060010190620007b1565b50620007dc929150620007e0565b5090565b5b80821115620007dc5760008155600101620007e1565b634e487b7160e01b600052604160045260246000fd5b60005b838110156200082a57818101518382015260200162000810565b838111156200074b5750506000910152565b80516001600160a01b03811681146200085457600080fd5b919050565b600080600080600060a086880312156200087257600080fd5b85516001600160401b03808211156200088a57600080fd5b818801915088601f8301126200089f57600080fd5b815181811115620008b457620008b4620007f7565b604051601f8201601f19908116603f01168101908382118183101715620008df57620008df620007f7565b816040528281528b6020848701011115620008f957600080fd5b6200090c8360208301602088016200080d565b809950505050505062000922602087016200083c565b935062000932604087016200083c565b925062000942606087016200083c565b915062000952608087016200083c565b90509295509295909350565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600061ffff808316818103620009a457620009a462000974565b6001019392505050565b600060018201620009c357620009c362000974565b5060010190565b6020815260008251806020840152620009eb8160408501602087016200080d565b601f01601f19169190910160400192915050565b600181811c9082168062000a1457607f821691505b60208210810362000a3557634e487b7160e01b600052602260045260246000fd5b50919050565b610a708062000a4b6000396000f3fe6080604052600436106100435760003560e01c80635c60da1b14610143578063715018a6146101ba5780638da5cb5b146101cf578063f2fde38b146101fa5761004a565b3661004a57005b600080357fffffffff000000000000000000000000000000000000000000000000000000001681527fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c602052604090205473ffffffffffffffffffffffffffffffffffffffff168061011d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4469616d6f6e643a2046756e6374696f6e20646f6573206e6f7420657869737460448201526064015b60405180910390fd5b3660008037600080366000845af43d6000803e80801561013c573d6000f35b3d6000fd5b005b34801561014f57600080fd5b507f2ad3e90873cbe86f6a024e2d91b7abbabc6ce35c355c15912cb7d7df99da236354640100000000900473ffffffffffffffffffffffffffffffffffffffff165b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b3480156101c657600080fd5b5061014161023e565b3480156101db57600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff16610191565b34801561020657600080fd5b506101416102153660046108af565b610252565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c90565b610246610778565b61025060006107f9565b565b61025a610778565b73ffffffffffffffffffffffffffffffffffffffff81166102fd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610114565b610306816107f9565b50565b7f2ad3e90873cbe86f6a024e2d91b7abbabc6ce35c355c15912cb7d7df99da235b90565b60008151116103be576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f4c69624469616d6f6e644375743a204e6f2073656c6563746f727320696e206660448201527f6163657420746f206375740000000000000000000000000000000000000000006064820152608401610114565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c73ffffffffffffffffffffffffffffffffffffffff8316610482576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f4c69624469616d6f6e644375743a204164642066616365742063616e2774206260448201527f65206164647265737328302900000000000000000000000000000000000000006064820152608401610114565b73ffffffffffffffffffffffffffffffffffffffff831660009081526001820160205260408120549061ffff82169003610576576104d884604051806060016040528060248152602001610a176024913961086e565b60028201805473ffffffffffffffffffffffffffffffffffffffff861660008181526001808701602090815260408320820180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00001661ffff90961695909517909455845490810185559381529190912090910180547fffffffffffffffffffffffff00000000000000000000000000000000000000001690911790555b60005b8351811015610771576000848281518110610596576105966108ec565b6020908102919091018101517fffffffff00000000000000000000000000000000000000000000000000000000811660009081529186905260409091205490915073ffffffffffffffffffffffffffffffffffffffff16801561067b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603560248201527f4c69624469616d6f6e644375743a2043616e2774206164642066756e6374696f60448201527f6e207468617420616c72656164792065786973747300000000000000000000006064820152608401610114565b73ffffffffffffffffffffffffffffffffffffffff871660008181526001878101602090815260408084208054938401815584528184206008840401805463ffffffff60079095166004026101000a948502191660e089901c94909402939093179092557fffffffff0000000000000000000000000000000000000000000000000000000086168352889052902080547fffffffffffffffffffff00000000000000000000000000000000000000000000169091177401000000000000000000000000000000000000000061ffff871602179055836107598161094a565b945050505080806107699061096b565b915050610579565b5050505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610250576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610114565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b813b81816108a9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161011491906109a3565b50505050565b6000602082840312156108c157600080fd5b813573ffffffffffffffffffffffffffffffffffffffff811681146108e557600080fd5b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061ffff8083168181036109615761096161091b565b6001019392505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361099c5761099c61091b565b5060010190565b600060208083528351808285015260005b818110156109d0578581018301518582016040015282016109b4565b818111156109e2576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01692909201604001939250505056fe4c69624469616d6f6e644375743a204e657720666163657420686173206e6f20636f6465a26469706673582212201e8efb3ade1498dd81c271625ade112a67c3e9dc69fa0db7b2a7093507d8bc8464736f6c634300080d0033c8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c4c69624469616d6f6e644375743a204e657720666163657420686173206e6f20636f646500000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000db34f630b843700727afdb1a26f1b3cac65a5a980000000000000000000000009ba601c62e1c327a3f477a03e868384000f8cd8800000000000000000000000070f08061b442c2f56b5b0138f617776f6157bad500000000000000000000000019574cc6e4a681a8c68ee2b901c8a4933d366068000000000000000000000000000000000000000000000000000000000000005568747470733a2f2f627564646162656172732e696e667572612d697066732e696f2f697066732f516d5235594e4175766e5265754b515639504a694b45523374445657675045714836527a5362596e5a75686d35460000000000000000000000