60806040523480156200001157600080fd5b50604051620081ea380380620081ea83398101604081905262000034916200200c565b604051806040016040528060048152602001634465786560e01b815250604051806040016040528060048152602001634445584560e01b8152506000620000806200085060201b60201c565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3508151620000df90600490602085019062001ef4565b508051620000f590600590602084019062001ef4565b50506006805460ff19166012179055506200011c306a51e410c0f93fe54300000062000855565b620001328169d3c21bcecceda100000062000855565b6200016c6200015b670de0b6b3a7640000629896806200093260201b62002dc21790919060201c565b6200097b60201b62002e031760201c565b306000908152600080516020620081048339815191526020908152604090912080546001600160801b0319166001600160801b039390931692909217909155620001d4906200015b906301f78a4090670de0b6b3a76400009062000932811b62002dc217901c565b6001600160a01b03821660009081527f71a67924699a20698523213e55fe499d539379d7769cd5567e2c45d583f815a36020908152604090912080546001600160801b0319166001600160801b03939093169290921790915562000256906200015b906301312d0090670de0b6b3a76400009062000932811b62002dc217901c565b6001600160a01b03821660009081527f8e1fee8c88a9e04123b21e90cae2727a7715bf522a1e46eb5934ccd05203a6b26020908152604090912080546001600160801b0319166001600160801b039390931692909217909155620002d7906200015b9062f4240090670de0b6b3a76400009062000932811b62002dc217901c565b6001600160a01b03821660009081527f0f36ad39aee03e7108cc48f54934702a5f0d4066f10344cebf8198978d86976a6020908152604090912080546001600160801b0319166001600160801b03939093169290921790915562000358906200015b906298968090670de0b6b3a76400009062000932811b62002dc217901c565b6001600160a01b03821660009081527fb4fcd034df3d20faa1c133b66d862ce92732727d40916b48ffb4020cb00fe0536020908152604090912080546001600160801b0319166001600160801b039390931692909217909155620003d9906200015b90624c4b4090670de0b6b3a76400009062000932811b62002dc217901c565b6001600160a01b03821660009081527f45429b9195d4ec5c0cf6c69e9c21a4ca0ea773b702c2de5735f85d2631f267466020908152604090912080546001600160801b0319166001600160801b0393909316929092179091556200044c90635f8ed14090620009af811b62002e3017901c565b60008052601160209081526000805160206200818a833981519152805463ffffffff191663ffffffff93909316929092179091556200049a906301e1338090620009af811b62002e3017901c565b60008052601160209081526000805160206200818a833981519152805463ffffffff939093166401000000000263ffffffff60201b1990931692909217909155620004f49063617004c09062002e30620009af821b17901c565b600160005260116020908152600080516020620081ca833981519152805463ffffffff191663ffffffff93909316929092179091556200054390630784ce0090620009af811b62002e3017901c565b600160005260116020908152600080516020620081ca833981519152805463ffffffff939093166401000000000263ffffffff60201b19909316929092179091556200059e9063607c1f409062002e30620009af821b17901c565b600260005260116020908152600080516020620080e4833981519152805463ffffffff191663ffffffff9390931692909217909155620005ed906303c2670090620009af811b62002e3017901c565b600260005260116020908152600080516020620080e4833981519152805463ffffffff939093166401000000000263ffffffff60201b1990931692909217909155620006489063600578409062002e30620009af821b17901c565b600360005260116020908152600080516020620080c4833981519152805463ffffffff191663ffffffff939093169290921790915562000697906301e1338090620009af811b62002e3017901c565b600360005260116020908152600080516020620080c4833981519152805463ffffffff939093166401000000000263ffffffff60201b1990931692909217909155620006f290635fddeb409062002e30620009af821b17901c565b6004600052601160209081526000805160206200814a833981519152805463ffffffff191663ffffffff939093169290921790915562000741906301e1338090620009af811b62002e3017901c565b6004600052601160209081526000805160206200814a833981519152805463ffffffff939093166401000000000263ffffffff60201b19909316929092179091556200079c90635fb65e409062002e30620009af821b17901c565b600560005260116020908152600080516020620081aa833981519152805463ffffffff191663ffffffff9390931692909217909155620007eb906301e1338090620009af811b62002e3017901c565b60056000526011602052600080516020620081aa833981519152805463ffffffff60201b191664010000000063ffffffff9390931692909202919091179055600b80546001600160a01b0319166001600160a01b0392909216919091179055620022b4565b335b90565b6001600160a01b038216620008875760405162461bcd60e51b81526004016200087e9062002274565b60405180910390fd5b6200089560008383620009d8565b620008b18160035462000e3960201b62002e561790919060201c565b6003556001600160a01b038216600090815260016020908152604090912054620008e691839062002e5662000e39821b17901c565b6001600160a01b0383166000818152600160205260408082209390935591519091906000805160206200816a8339815191529062000926908590620022ab565b60405180910390a35050565b600082620009435750600062000975565b828202828482816200095157fe5b0414620009725760405162461bcd60e51b81526004016200087e906200218e565b90505b92915050565b60006001600160801b03821115620009a75760405162461bcd60e51b81526004016200087e90620020ce565b50805b919050565b600063ffffffff821115620009a75760405162461bcd60e51b81526004016200087e90620021cf565b620009e38362000e61565b15620009f457620009f48362000e99565b62000a03635f8ed14062001087565b1562000c5357600162000a1a635f71d0406200109e565b1562000a2d5762000a2a620010a3565b90505b62000a388462000e61565b1562000ad9576000818152600e602090815260408083206001600160a01b038816845282529091205462000a8d916200015b91600160781b90046001600160801b031690859062001121811b62002e7b17901c565b6000828152600e602090815260408083206001600160a01b0389168452909152902080546001600160801b0392909216600160781b02600160781b600160f81b03199092169190911790555b62000ae48362000e61565b1562000c515762000af462001f79565b506001600160a01b0383166000908152600f6020908152604091829020825160608101845290546001600160801b0381168252600160801b81046001600160781b031692820192909252600160f81b90910460ff169181018290529062000ba35762000b6b826200116b60201b62002ebd1760201c565b6001600160a01b0385166000908152600f60205260409020805460ff92909216600160f81b026001600160f81b039092169190911790555b6001600160a01b038516301462000c4f576000828152600e602090815260408083206001600160a01b038816845282529091205462000c03916200015b91600160781b90046001600160801b031690869062000e39811b62002e5617901c565b6000838152600e602090815260408083206001600160a01b0389168452909152902080546001600160801b0392909216600160781b02600160781b600160f81b03199092169190911790555b505b505b600d5462000e1e5762000c668362000e61565b1562000ce4576001600160a01b0383166000908152600f602090815260409091205462000cad916200015b916001600160801b031690849062002e7b62001121821b17901c565b6001600160a01b0384166000908152600f6020526040902080546001600160801b0319166001600160801b03929092169190911790555b62000cef8262000e61565b1562000e1e576001600160a01b0382166000908152600f602090815260409091205462000d36916200015b916001600160801b031690849062002e5662000e39821b17901c565b6001600160a01b0383166000908152600f6020908152604080832080546001600160801b0319166001600160801b03959095169490941790935560109052205463ffffffff1662000e1e5762000d9742620009af60201b62002e301760201c565b6001600160a01b0383166000908152601060209081526040909120805463ffffffff191663ffffffff939093169290921790915562000de1904290620009af811b62002e3017901c565b6001600160a01b0383166000908152601060205260409020805463ffffffff929092166401000000000263ffffffff60201b199092169190911790555b62000e298362001191565b62000e348262001191565b505050565b600082820183811015620009725760405162461bcd60e51b81526004016200087e90620020f8565b60006001600160a01b03821630148062000e8257506001600160a01b038216155b1562000e9157506000620009aa565b506001919050565b60016001600160a01b03821660009081527f63dac8ac72609a2437a2da33ae5c3341a805b2815f084aeb7a66b5dcf5c8eb596020526040902054600160f81b900460ff16600181111562000ee957fe5b141562000ef65762001084565b6001600160a01b0381166000908152600f6020526040902054600160f81b900460ff1662000f245762001084565b62000f33635f71d04062001087565b1562000f3f5762001084565b600062000f4b620010a3565b6001600160a01b0383166000908152600f6020526040902054909150600160f81b900460ff165b8181101562000e345760016000828152600e602090815260408083206001600160a01b0388168452909152902054600160f81b900460ff16600181111562000fb657fe5b141562000fc3576200107b565b62000fcd62001f99565b506000818152601460209081526040918290208251808401909352546001600160781b0381168352600160781b90046001600160801b03169082018190526200102a5760405162461bcd60e51b81526004016200087e906200223d565b6000828152600e602090815260408083206001600160a01b0388168452909152902080546001600160f81b0316600160f81b1790556200106c8285836200125e565b62001079828583620014b9565b505b60010162000f72565b50565b60006200097562001098836200109e565b62001892565b421190565b6000620010b4635f71d0406200109e565b620010d35760405162461bcd60e51b81526004016200087e9062002157565b620010e2635f8ed1406200109e565b15620010f15750601762000852565b6200111c6201518062001108635f71d04062001896565b620018b260201b62002ee01790919060201c565b905090565b60006200097283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506200191560201b60201c565b600060ff821115620009a75760405162461bcd60e51b81526004016200087e906200212f565b6001600160a01b03811660009081526010602052604090205463ffffffff64010000000090910416421415620011c75762001084565b620011d28162001944565b6001600160a01b039190911660009081526010602090815260409182902083518154928501519385015163ffffffff1990931663ffffffff9182161763ffffffff60201b1916640100000000919094160292909217600160401b600160c01b031916680100000000000000006001600160801b0390921691909102178155606090910151600190910155565b6200126862001fb0565b6000848152600e602090815260408083206001600160a01b0387168452825291829020825160608101845281546001600160781b0381168252600160781b81046001600160801b03169382019390935292909190830190600160f81b900460ff166001811115620012d557fe5b6001811115620012e157fe5b815250509050600082602001516001600160801b031662001326670de0b6b3a764000084600001516001600160781b03166200093260201b62002dc21790919060201c565b816200132e57fe5b04905060006200135a8284602001516001600160801b031662000e3960201b62002e561790919060201c565b905062001372816200097b60201b62002e031760201c565b6000878152600e602090815260408083206001600160a01b038a168452909152902080546001600160801b0392909216600160781b02600160781b600160f81b03199092169190911790556016861015620014a457620014356200015b82600e6000620013ef60018c62000e3960201b62002e561790919060201c565b8152602080820192909252604090810160009081206001600160a01b038c16825283522054600160781b90046001600160801b0316919062000e39811b62002e5617901c565b600e60006200145460018a62000e3960201b62002e561790919060201c565b8152602080820192909252604090810160009081206001600160a01b038a168252909252902080546001600160801b0392909216600160781b02600160781b600160f81b03199092169190911790555b620014b130868462001c5d565b505050505050565b6015831115620014c95762000e34565b620014d362001fb0565b6000848152600e602090815260408083206001600160a01b0387168452825291829020825160608101845281546001600160781b0381168252600160781b81046001600160801b03169382019390935292909190830190600160f81b900460ff1660018111156200154057fe5b60018111156200154c57fe5b9052509050600060018514156200159857606462001587600584602001516001600160801b03166200093260201b62002dc21790919060201c565b816200158f57fe5b04905062001767565b60016000600e81620015b7898562001121602090811b62002e7b17901c565b8152602080820192909252604090810160009081206001600160a01b038a168252909252902054600160781b90046001600160801b03169050801580159062001631575083602001516001600160801b03166064620016266065846200093260201b62002dc21790919060201c565b816200162e57fe5b04105b156200163c57600291505b6020808601518651868301516001600160a01b038a1660009081527fa7c5ba7114a813b50159add3a36832908dc83db71d0b9a24c2ad0f83be9582079094526040909320546001600160801b03928316936001600160781b039092169291821691600291600691600160781b9091041615620016ba575060059050600f5b620016f16202e80c620016dd8760646200093260201b62002dc21790919060201c565b6200093260201b62002dc21790919060201c565b6200175488620016dd86620016dd620017198a886200093260201b62002dc21790919060201c565b620017406202e80c620016dd8e620016dd8c8e62000e3960201b62002e561790919060201c565b6200112160201b62002e7b1790919060201c565b816200175c57fe5b049750505050505050505b3060009081526000805160206200810483398151915260205260409020546001600160801b0316818110156200179b578091505b6001600160a01b0385166000908152600080516020620081048339815191526020908152604090912054620017ea916200015b916001600160801b031690859062000e39811b62002e5617901c565b6001600160a01b0386166000908152600080516020620081048339815191526020908152604090912080546001600160801b0319166001600160801b0393909316929092179091556200184f906200015b908390859062001121811b62002e7b17901c565b306000908152600080516020620081048339815191526020526040902080546001600160801b0319166001600160801b0392909216919091179055505050505050565b1590565b60006200097582426200112160201b62002e7b1790919060201c565b600080620018cf838562001d9960201b62002f201790919060201c565b11156200190357620018fb6001838581620018e657fe5b0462000e3960201b62002e561790919060201c565b905062000975565b8183816200190d57fe5b049392505050565b600081848411156200193c5760405162461bcd60e51b81526004016200087e919062002035565b505050900390565b6200194e62001fce565b6200195862001fce565b506001600160a01b0382166000908152601060209081526040918290208251608081018452815463ffffffff808216835264010000000082041693820193909352680100000000000000009092046001600160801b0316928201929092526001909101546060820152620019cc8362000e61565b620019d9579050620009aa565b602081015163ffffffff166000620019f18562001de3565b90506000620019ff62001dfe565b90508015600062001a4662001a2d62001a188762001896565b866200093260201b62002dc21790919060201c565b876060015162000e3960201b62002e561790919060201c565b9050811562001ac85760608601819052855162001a899062001a6e9063ffffffff1662001896565b828162001a7757fe5b046200097b60201b62002e031760201c565b6001600160801b0316604087015262001aae42620009af602090811b62002e3017901c565b63ffffffff16602087015250939450620009aa9350505050565b600062001b0f8462001afb62278d00620016dd8162001ae78562001896565b62001e3760201b62002f621790919060201c565b62000e3960201b62002e561790919060201c565b905080861062001b26576060870182905262001c2f565b600062001b4287836200112160201b62002e7b1790919060201c565b9050600062001b7d62001b6483896200093260201b62002dc21790919060201c565b8a6060015162000e3960201b62002e561790919060201c565b90508583141562001bc45762001bb062001a6e8a6000015163ffffffff16856200112160201b62002e7b1790919060201c565b6001600160801b031660408a015262001c03565b62278d00821162001bde5762001bb062278d008262001a77565b62001bf4876200097b60201b62002e031760201c565b6001600160801b031660408a01525b62001c2762001c128462001896565b886200093260201b62002dc21790919060201c565b60608a015250505b62001c4542620009af60201b62002e301760201c565b63ffffffff1660208801525094979650505050505050565b6001600160a01b03831662001c865760405162461bcd60e51b81526004016200087e90620021f8565b6001600160a01b03821662001caf5760405162461bcd60e51b81526004016200087e906200208b565b62001cbc838383620009d8565b62001d098160405180606001604052806026815260200162008124602691396001600160a01b03861660009081526001602090815260409091205492919062002fa462001915821b17901c565b6001600160a01b038085166000908152600160209081526040808320949094559185168152919091205462001d4991839062002e5662000e39821b17901c565b6001600160a01b0380841660008181526001602052604090819020939093559151908516906000805160206200816a8339815191529062001d8c908590620022ab565b60405180910390a3505050565b60006200097283836040518060400160405280601881526020017f536166654d6174683a206d6f64756c6f206279207a65726f000000000000000081525062001e8160201b60201c565b6001600160a01b031660009081526001602052604090205490565b600d546000908062001e1557600091505062000852565b62001e31635f8ed1408262000e39602090811b62002e5617901c565b91505090565b60006200097283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525062001eb960201b60201c565b6000818362001ea55760405162461bcd60e51b81526004016200087e919062002035565b5082848162001eb057fe5b06949350505050565b6000818362001edd5760405162461bcd60e51b81526004016200087e919062002035565b50600083858162001eea57fe5b0495945050505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1062001f3757805160ff191683800117855562001f67565b8280016001018555821562001f67579182015b8281111562001f6757825182559160200191906001019062001f4a565b5062001f7592915062001ff5565b5090565b604080516060810182526000808252602082018190529181019190915290565b604080518082019091526000808252602082015290565b60408051606081018252600080825260208201819052909182015290565b60408051608081018252600080825260208201819052918101829052606081019190915290565b5b8082111562001f75576000815560010162001ff6565b6000602082840312156200201e578081fd5b81516001600160a01b038116811462000972578182fd5b6000602080835283518082850152825b81811015620020635785810183015185820160400152820162002045565b81811115620020755783604083870101525b50601f01601f1916929092016040019392505050565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b60208082526010908201526f75696e74313238206f766572666c6f7760801b604082015260600190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b6020808252600e908201526d75696e7438206f766572666c6f7760901b604082015260600190565b60208082526019908201527f546f6b656e73616c65206e6f7420737461727465642079657400000000000000604082015260600190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6040820152607760f81b606082015260800190565b6020808252600f908201526e75696e743332206f766572666c6f7760881b604082015260600190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526015908201527f526f756e64206973206e6f742070726570617265640000000000000000000000604082015260600190565b6020808252601f908201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604082015260600190565b90815260200190565b615e0080620022c46000396000f3fe6080604052600436106103e25760003560e01c80637abd66d81161020d578063c89e211d11610128578063e642d3da116100bb578063f2fde38b1161008a578063f688bcfb1161006f578063f688bcfb14610b7d578063f8eeed6214610b9d578063ff8fef9d14610bb257610436565b8063f2fde38b14610b55578063f6326fb314610b7557610436565b8063e642d3da14610ac7578063e7c80f1714610af5578063eb19345714610b15578063f0f4426014610b3557610436565b8063dd62ed3e116100f7578063dd62ed3e14610a45578063df65774914610a65578063dfce794214610a85578063e5066bbf14610aa557610436565b8063c89e211d146109db578063d4fd4f2b146109fb578063d55c476c14610a10578063dc110eee14610a2557610436565b80639d1b464a116101a0578063a9059cbb1161016f578063a9059cbb1461097c578063a98ad46c1461099c578063af7665ce146109b1578063b0a9f273146109c657610436565b80639d1b464a146109125780639e1379b614610927578063a0352ea314610947578063a457c2d71461095c57610436565b80638c65c81f116101dc5780638c65c81f1461088c5780638da5cb5b146108ba57806395d89b41146108cf578063987c56be146108e457610436565b80637abd66d814610822578063812a6dbd146108375780638a19c8bc146108575780638ab1d6811461086c57610436565b806342966c68116102fd578063653a908d11610290578063715018a61161025f578063715018a6146107b8578063792459d9146107cd57806379cc6790146107e25780637aa6636a1461080257610436565b8063653a908d146107435780636c4637f514610763578063709ef5e21461078357806370a082311461079857610436565b806354133307116102cc57806354133307146106cc5780635c32a441146106e15780635d0eaaaf1461070157806361d027b31461072e57610436565b806342966c6814610657578063466db44c146106775780634d1567e81461068c57806352173ba8146106ac57610436565b806318160ddd116103755780632601a2c3116103445780632601a2c3146105d3578063313ce567146105e857806334c3f6fa1461060a578063395093511461063757610436565b806318160ddd1461055e578063214405fc1461057357806323b872dd14610593578063245bde3e146105b357610436565b80630c2e4181116103b15780630c2e4181146104e557806310caf5a31461050757806311eac85514610527578063171fa7211461053c57610436565b8063042ee4261461043b57806306fdde031461045b578063095ea7b3146104865780630be913ae146104b357610436565b36610436577f5c2145746a96e247ab56dae7070701d6a6d52685eb027789d7a768552d262f63610410610bc7565b3460003660405161042494939291906151a8565b60405180910390a1610434610bcc565b005b600080fd5b34801561044757600080fd5b50610434610456366004614f1f565b610cb9565b34801561046757600080fd5b50610470610e02565b60405161047d9190615257565b60405180910390f35b34801561049257600080fd5b506104a66104a1366004614ed4565b610eb6565b60405161047d919061524c565b3480156104bf57600080fd5b506104d36104ce366004614e0b565b610ed4565b60405161047d96959493929190615bdf565b3480156104f157600080fd5b506104fa6111ac565b60405161047d9190615144565b34801561051357600080fd5b506104a6610522366004614e9f565b6111bb565b34801561053357600080fd5b506104fa6111db565b34801561054857600080fd5b506105516111ef565b60405161047d9190615cc1565b34801561056a57600080fd5b506105516111f6565b34801561057f57600080fd5b5061043461058e366004614ed4565b6111fc565b34801561059f57600080fd5b506104a66105ae366004614e5f565b611282565b3480156105bf57600080fd5b506104346105ce366004614f87565b611309565b3480156105df57600080fd5b506104fa611596565b3480156105f457600080fd5b506105fd6115a5565b60405161047d9190615ce1565b34801561061657600080fd5b5061062a610625366004614fd6565b6115ae565b60405161047d9190615bc3565b34801561064357600080fd5b506104a6610652366004614ed4565b61164b565b34801561066357600080fd5b50610434610672366004614fa6565b611699565b34801561068357600080fd5b506105516116aa565b34801561069857600080fd5b506104346106a7366004614e0b565b611746565b3480156106b857600080fd5b506104346106c7366004614e0b565b6117f8565b3480156106d857600080fd5b506105516118aa565b3480156106ed57600080fd5b506104346106fc366004614ffa565b6118b8565b34801561070d57600080fd5b5061072161071c366004614e0b565b611971565b60405161047d9190615bd1565b34801561073a57600080fd5b506104fa6119f0565b34801561074f57600080fd5b5061043461075e366004614e0b565b6119ff565b34801561076f57600080fd5b506104a661077e366004614fa6565b611ab6565b34801561078f57600080fd5b50610551611ae7565b3480156107a457600080fd5b506105516107b3366004614e0b565b611aee565b3480156107c457600080fd5b50610434611b09565b3480156107d957600080fd5b50610434611ba0565b3480156107ee57600080fd5b506104346107fd366004614ed4565b611bb2565b34801561080e57600080fd5b5061043461081d366004614e0b565b611c07565b34801561082e57600080fd5b50610551611cb9565b34801561084357600080fd5b50610434610852366004614f4e565b611cc1565b34801561086357600080fd5b50610551611d15565b34801561087857600080fd5b50610434610887366004614e0b565b611d74565b34801561089857600080fd5b506108ac6108a7366004614fa6565b611df7565b60405161047d929190615c7d565b3480156108c657600080fd5b506104fa611e38565b3480156108db57600080fd5b50610470611e47565b3480156108f057600080fd5b506109046108ff366004614f6a565b611ec6565b60405161047d929190615ca7565b34801561091e57600080fd5b50610551611f04565b34801561093357600080fd5b50610434610942366004614fa6565b611f76565b34801561095357600080fd5b50610551611ff7565b34801561096857600080fd5b506104a6610977366004614ed4565b611ffd565b34801561098857600080fd5b506104a6610997366004614ed4565b612065565b3480156109a857600080fd5b506104fa612079565b3480156109bd57600080fd5b506104fa612088565b3480156109d257600080fd5b50610551612097565b3480156109e757600080fd5b506105516109f6366004614e0b565b61209f565b348015610a0757600080fd5b506104346120c0565b348015610a1c57600080fd5b506105516121b7565b348015610a3157600080fd5b50610434610a40366004614f33565b612230565b348015610a5157600080fd5b50610551610a60366004614e27565b6126ff565b348015610a7157600080fd5b506104a6610a80366004614fa6565b61272a565b348015610a9157600080fd5b50610434610aa0366004614e0b565b61275a565b348015610ab157600080fd5b50610aba61280c565b60405161047d91906151f4565b348015610ad357600080fd5b50610ae7610ae2366004614f4e565b6128b7565b60405161047d929190615cca565b348015610b0157600080fd5b50610434610b10366004614fa6565b6128db565b348015610b2157600080fd5b50610551610b30366004614e0b565b612a7d565b348015610b4157600080fd5b50610434610b50366004614e0b565b612a9b565b348015610b6157600080fd5b50610434610b70366004614e0b565b612b73565b610434612c41565b348015610b8957600080fd5b50610434610b98366004614fa6565b612c8e565b348015610ba957600080fd5b50610551612d93565b348015610bbe57600080fd5b50610551612dbc565b335b90565b600b546040516001600160a01b03909116903480156108fc02916000818181858888f19350505050158015610c05573d6000803e3d6000fd5b506000670de0b6b3a7640000610ca3600a60009054906101000a90046001600160a01b03166001600160a01b031663bebf110a6040518163ffffffff1660e01b8152600401602060405180830381600087803b158015610c6457600080fd5b505af1158015610c78573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c9c9190614fbe565b3490612dc2565b81610caa57fe5b049050610cb681612fd0565b50565b610cc1610bc7565b6000546001600160a01b03908116911614610cf75760405162461bcd60e51b8152600401610cee9061581a565b60405180910390fd5b7f70d4241f29147d132737e3b0d80e661b9cc6b2911b7b9dc383ab54cf790a6eda610d20610bc7565b600036604051610d329392919061517c565b60405180910390a16001600160a01b038316301415610d635760405162461bcd60e51b8152600401610cee906156e1565b6040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b0384169063a9059cbb90610daa90859085906004016151db565b602060405180830381600087803b158015610dc457600080fd5b505af1158015610dd8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dfc9190614eff565b50505050565b60048054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610eac5780601f10610e8157610100808354040283529160200191610eac565b820191906000526020600020905b815481529060010190602001808311610e8f57829003601f168201915b5050505050905090565b6000610eca610ec3610bc7565b848461326b565b5060015b92915050565b610edc614cd9565b610ee4614cf9565b610eec614d27565b6000610ef6614d54565b6001600160a01b0386166000908152600f60209081526040808320815160608101835290546001600160801b038116825270010000000000000000000000000000000081046effffffffffffffffffffffffffffff1693820193909352600160f81b90920460ff1690820152955060015b60168111611038576000818152600e602090815260408083206001600160a01b038c168452825291829020825160608101845281546effffffffffffffffffffffffffffff811682526f0100000000000000000000000000000081046001600160801b03169382019390935292909190830190600160f81b900460ff166001811115610fef57fe5b6001811115610ffa57fe5b905250867fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83016016811061102b57fe5b6020020152600101610f67565b5060005b60068110156110dd576012600082600581111561105557fe5b600581111561106057fe5b600581111561106b57fe5b8152602080820192909252604090810160009081206001600160a01b038c16825283528190208151808301909252546001600160801b03808216835270010000000000000000000000000000000090910416918101919091528582600681106110d057fe5b602002015260010161103c565b506001600160a01b0387166000908152600f602052604081205470010000000000000000000000000000000090046effffffffffffffffffffffffffffff16151593505b6004811015611197576001600160a01b03881660009081526013602052604081209082600381111561114f57fe5b600381111561115a57fe5b600381111561116557fe5b815260208101919091526040016000205460ff1683826004811061118557fe5b91151560209092020152600101611121565b506111a187611aee565b905091939550919395565b6009546001600160a01b031681565b601360209081526000928352604080842090915290825290205460ff1681565b60065461010090046001600160a01b031681565b620f424081565b60035490565b611204610bc7565b6000546001600160a01b039081169116146112315760405162461bcd60e51b8152600401610cee9061581a565b7f70d4241f29147d132737e3b0d80e661b9cc6b2911b7b9dc383ab54cf790a6eda61125a610bc7565b60003660405161126c9392919061517c565b60405180910390a161127e828261331f565b5050565b600061128f848484613398565b6112ff8461129b610bc7565b6112fa85604051806060016040528060288152602001615d5a602891396001600160a01b038a166000908152600260205260408120906112d9610bc7565b6001600160a01b031681526020810191909152604001600020549190612fa4565b61326b565b5060019392505050565b7f70d4241f29147d132737e3b0d80e661b9cc6b2911b7b9dc383ab54cf790a6eda611332610bc7565b6000366040516113449392919061517c565b60405180910390a1611354611ba0565b61135c614d72565b6012600085600581111561136c57fe5b600581111561137757fe5b8152602001908152602001600020600061138f610bc7565b6001600160a01b0316815260208082019290925260409081016000208151808301909252546001600160801b038082168352700100000000000000000000000000000000909104169181018290529150156113fc5760405162461bcd60e51b8152600401610cee90615a0b565b80516001600160801b03168211156114265760405162461bcd60e51b8152600401610cee90615718565b80516114449061143f906001600160801b031684612e7b565b612e03565b6012600086600581111561145457fe5b600581111561145f57fe5b81526020019081526020016000206000611477610bc7565b6001600160a01b03166001600160a01b0316815260200190815260200160002060000160006101000a8154816001600160801b0302191690836001600160801b0316021790555061151661143f83601260008860058111156114d557fe5b60058111156114e057fe5b8152602080820192909252604090810160009081206001600160a01b038a1682529092529020546001600160801b031690612e56565b6012600086600581111561152657fe5b600581111561153157fe5b8152602080820192909252604090810160009081206001600160a01b039790971681529590915290932080547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166001600160801b0390941693909317909255505050565b6008546001600160a01b031681565b60065460ff1690565b6115b6614d89565b6000838152600e602090815260408083206001600160a01b0386168452825291829020825160608101845281546effffffffffffffffffffffffffffff811682526f0100000000000000000000000000000081046001600160801b03169382019390935292909190830190600160f81b900460ff16600181111561163657fe5b600181111561164157fe5b9052509392505050565b6000610eca611658610bc7565b846112fa8560026000611669610bc7565b6001600160a01b03908116825260208083019390935260409182016000908120918c168152925290205490612e56565b610cb66116a4610bc7565b826134ad565b600954604080517fbebf110a00000000000000000000000000000000000000000000000000000000815290516000926001600160a01b03169163bebf110a91600480830192602092919082900301818787803b15801561170957600080fd5b505af115801561171d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117419190614fbe565b905090565b61174e610bc7565b6000546001600160a01b0390811691161461177b5760405162461bcd60e51b8152600401610cee9061581a565b7f70d4241f29147d132737e3b0d80e661b9cc6b2911b7b9dc383ab54cf790a6eda6117a4610bc7565b6000366040516117b69392919061517c565b60405180910390a1600880547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b611800610bc7565b6000546001600160a01b0390811691161461182d5760405162461bcd60e51b8152600401610cee9061581a565b7f70d4241f29147d132737e3b0d80e661b9cc6b2911b7b9dc383ab54cf790a6eda611856610bc7565b6000366040516118689392919061517c565b60405180910390a1600780547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b692855b982aee678b0000081565b6118c0610bc7565b6000546001600160a01b039081169116146118ed5760405162461bcd60e51b8152600401610cee9061581a565b7f70d4241f29147d132737e3b0d80e661b9cc6b2911b7b9dc383ab54cf790a6eda611916610bc7565b6000366040516119289392919061517c565b60405180910390a1600061193a6116aa565b905080831115801561194c5750818111155b6119685760405162461bcd60e51b8152600401610cee90615b8c565b610dfc8461358f565b611979614cd9565b506001600160a01b0381166000908152600f6020908152604091829020825160608101845290546001600160801b038116825270010000000000000000000000000000000081046effffffffffffffffffffffffffffff1692820192909252600160f81b90910460ff16918101919091525b919050565b600b546001600160a01b031681565b611a07610bc7565b6000546001600160a01b03908116911614611a345760405162461bcd60e51b8152600401610cee9061581a565b7f70d4241f29147d132737e3b0d80e661b9cc6b2911b7b9dc383ab54cf790a6eda611a5d610bc7565b600036604051611a6f9392919061517c565b60405180910390a1600680546001600160a01b03909216610100027fffffffffffffffffffffff0000000000000000000000000000000000000000ff909216919091179055565b6000610ece611ae2610e10611adc635f71d040611ad66201518088612dc2565b90612e56565b90612e7b565b613968565b6202e80c81565b6001600160a01b031660009081526001602052604090205490565b611b11610bc7565b6000546001600160a01b03908116911614611b3e5760405162461bcd60e51b8152600401610cee9061581a565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b611bb0611bab610bc7565b61396d565b565b6000611be482604051806060016040528060248152602001615d8260249139611bdd86610a60610bc7565b9190612fa4565b9050611bf883611bf2610bc7565b8361326b565b611c0283836134ad565b505050565b611c0f610bc7565b6000546001600160a01b03908116911614611c3c5760405162461bcd60e51b8152600401610cee9061581a565b7f70d4241f29147d132737e3b0d80e661b9cc6b2911b7b9dc383ab54cf790a6eda611c65610bc7565b600036604051611c779392919061517c565b60405180910390a1600a80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b635f71d04081565b7f70d4241f29147d132737e3b0d80e661b9cc6b2911b7b9dc383ab54cf790a6eda611cea610bc7565b600036604051611cfc9392919061517c565b60405180910390a1610cb681611d10610bc7565b613b6b565b6000611d24635f71d040613968565b611d405760405162461bcd60e51b8152600401610cee90615605565b611d4d635f8ed140613968565b15611d5a57506017610bc9565b61174162015180611d6e635f71d040613d5c565b90612ee0565b611d7c610bc7565b6000546001600160a01b03908116911614611da95760405162461bcd60e51b8152600401610cee9061581a565b7f70d4241f29147d132737e3b0d80e661b9cc6b2911b7b9dc383ab54cf790a6eda611dd2610bc7565b600036604051611de49392919061517c565b60405180910390a1610cb681600061331f565b6014602052600090815260409020546effffffffffffffffffffffffffffff8116906f0100000000000000000000000000000090046001600160801b031682565b6000546001600160a01b031690565b60058054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610eac5780601f10610e8157610100808354040283529160200191610eac565b60126020908152600092835260408084209091529082529020546001600160801b038082169170010000000000000000000000000000000090041682565b600954604080517f7eeda70300000000000000000000000000000000000000000000000000000000815290516000926001600160a01b031691637eeda703916004808301926020929190829003018186803b158015611f6257600080fd5b505afa15801561171d573d6000803e3d6000fd5b611f7e610bc7565b6000546001600160a01b03908116911614611fab5760405162461bcd60e51b8152600401610cee9061581a565b7f70d4241f29147d132737e3b0d80e661b9cc6b2911b7b9dc383ab54cf790a6eda611fd4610bc7565b600036604051611fe69392919061517c565b60405180910390a1610cb68161358f565b600c5481565b6000610eca61200a610bc7565b846112fa85604051806060016040528060258152602001615da66025913960026000612034610bc7565b6001600160a01b03908116825260208083019390935260409182016000908120918d16815292529020549190612fa4565b6000610eca612072610bc7565b8484613398565b6007546001600160a01b031681565b600a546001600160a01b031681565b635f8ed14081565b6001600160a01b031660009081526010602052604090205463ffffffff1690565b6120c8610bc7565b6000546001600160a01b039081169116146120f55760405162461bcd60e51b8152600401610cee9061581a565b7f70d4241f29147d132737e3b0d80e661b9cc6b2911b7b9dc383ab54cf790a6eda61211e610bc7565b6000366040516121309392919061517c565b60405180910390a1612145635f8ed140613968565b6121615760405162461bcd60e51b8152600401610cee90615b55565b600d54156121815760405162461bcd60e51b8152600401610cee9061535c565b612189613d68565b6121a55760405162461bcd60e51b8152600401610cee90615325565b6121b2635f8ed140613d5c565b600d55565b60006121c6635f71d040613968565b6121e25760405162461bcd60e51b8152600401610cee90615605565b6121fa6121f5635f8ed140610e10612e7b565b613db5565b6122165760405162461bcd60e51b8152600401610cee90615560565b61174162015180611d6e610e10611ad6635f71d040613d5c565b7f70d4241f29147d132737e3b0d80e661b9cc6b2911b7b9dc383ab54cf790a6eda612259610bc7565b60003660405161226b9392919061517c565b60405180910390a1600061227d611d15565b9050600a811161229f5760405162461bcd60e51b8152600401610cee906157e3565b6122a7611ba0565b6122af614d72565b600080805260126020527f7e7fa33969761a458e04f477e039a608702b4f924981d6653935a8319a08ad7b906122e3610bc7565b6001600160a01b0316815260208082019290925260409081016000208151808301909252546001600160801b03808216808452700100000000000000000000000000000000909204169282019290925291506123515760405162461bcd60e51b8152600401610cee90615b1e565b600080808086600381111561236257fe5b1415612378575060079150600a905060566123cc565b600186600381111561238657fe5b141561239c5750600a9150600f905060506123cc565b60028660038111156123aa57fe5b14156123c05750600f91506014905060466123cc565b5060149150601e9050603c5b61242d601360006123db610bc7565b6001600160a01b03166001600160a01b03168152602001908152602001600020600088600381111561240957fe5b600381111561241457fe5b815260208101919091526040016000205460ff16613dc3565b6124495760405162461bcd60e51b8152600401610cee90615401565b600160136000612457610bc7565b6001600160a01b03166001600160a01b03168152602001908152602001600020600088600381111561248557fe5b600381111561249057fe5b8152602081019190915260400160002080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055600c546124da9084612dc2565b6124e26116aa565b10156125005760405162461bcd60e51b8152600401610cee9061563c565b60208401518451600091612520916001600160801b039081169116612e7b565b9050600060646125308386612dc2565b8161253757fe5b049050600060646125488386612dc2565b8161254f57fe5b049050600061255e8383612e7b565b905061258361143f848a602001516001600160801b0316612e5690919063ffffffff16565b600080805260126020527f7e7fa33969761a458e04f477e039a608702b4f924981d6653935a8319a08ad7b906125b7610bc7565b6001600160a01b03168152602081019190915260400160002080546001600160801b03928316700100000000000000000000000000000000029216919091179055601689116126d7576000898152600e6020526040812061265c9161143f918591612620610bc7565b6001600160a01b031681526020810191909152604001600020546f0100000000000000000000000000000090046001600160801b031690612e56565b60008a8152600e6020526040812090612673610bc7565b6001600160a01b03168152602081019190915260400160002080546001600160801b03929092166f01000000000000000000000000000000027fff00000000000000000000000000000000ffffffffffffffffffffffffffffff9092169190911790555b6126e130826134ad565b6126f3306126ed610bc7565b84613398565b50505050505050505050565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b6000908152601460205260409020546f0100000000000000000000000000000090046001600160801b0316151590565b612762610bc7565b6000546001600160a01b0390811691161461278f5760405162461bcd60e51b8152600401610cee9061581a565b7f70d4241f29147d132737e3b0d80e661b9cc6b2911b7b9dc383ab54cf790a6eda6127b8610bc7565b6000366040516127ca9392919061517c565b60405180910390a1600980547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b612814614da7565b61281c614da7565b60015b601681116128b1576000818152601460209081526040918290208251808401909352546effffffffffffffffffffffffffffff811683526f0100000000000000000000000000000090046001600160801b031690820152827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8301601681106128a457fe5b602002015260010161281f565b50905090565b60116020526000908152604090205463ffffffff8082169164010000000090041682565b7f70d4241f29147d132737e3b0d80e661b9cc6b2911b7b9dc383ab54cf790a6eda612904610bc7565b6000366040516129169392919061517c565b60405180910390a16007546001600160a01b03166323b872dd612937610bc7565b600b546040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b16815261297f92916001600160a01b0316908690600401615158565b602060405180830381600087803b15801561299957600080fd5b505af11580156129ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129d19190614eff565b506000620f4240612a6a600860009054906101000a90046001600160a01b03166001600160a01b031663bebf110a6040518163ffffffff1660e01b8152600401602060405180830381600087803b158015612a2b57600080fd5b505af1158015612a3f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a639190614fbe565b8490612dc2565b81612a7157fe5b04905061127e81612fd0565b6000612a8882613dc7565b604001516001600160801b031692915050565b612aa3610bc7565b6000546001600160a01b03908116911614612ad05760405162461bcd60e51b8152600401610cee9061581a565b7f70d4241f29147d132737e3b0d80e661b9cc6b2911b7b9dc383ab54cf790a6eda612af9610bc7565b600036604051612b0b9392919061517c565b60405180910390a16001600160a01b038116612b395760405162461bcd60e51b8152600401610cee90615a79565b600b80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b612b7b610bc7565b6000546001600160a01b03908116911614612ba85760405162461bcd60e51b8152600401610cee9061581a565b6001600160a01b038116612bce5760405162461bcd60e51b8152600401610cee90615438565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b7f5c2145746a96e247ab56dae7070701d6a6d52685eb027789d7a768552d262f63612c6a610bc7565b34600036604051612c7e94939291906151a8565b60405180910390a1611bb0610bcc565b7f70d4241f29147d132737e3b0d80e661b9cc6b2911b7b9dc383ab54cf790a6eda612cb7610bc7565b600036604051612cc99392919061517c565b60405180910390a160065461010090046001600160a01b03166323b872dd612cef610bc7565b600b546040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b168152612d3792916001600160a01b0316908690600401615158565b602060405180830381600087803b158015612d5157600080fd5b505af1158015612d65573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d899190614eff565b50610cb681612fd0565b600d5460009080612da8576000915050610bc9565b612db6635f8ed14082612e56565b91505090565b600d5481565b600082612dd157506000610ece565b82820282848281612dde57fe5b0414612dfc5760405162461bcd60e51b8152600401610cee9061574f565b9392505050565b60006001600160801b03821115612e2c5760405162461bcd60e51b8152600401610cee90615393565b5090565b600063ffffffff821115612e2c5760405162461bcd60e51b8152600401610cee906157ac565b600082820183811015612dfc5760405162461bcd60e51b8152600401610cee906154f2565b6000612dfc83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612fa4565b600060ff821115612e2c5760405162461bcd60e51b8152600401610cee90615529565b600080612eed8484612f20565b1115612f0f57612f086001838581612f0157fe5b0490612e56565b9050610ece565b818381612f1857fe5b049392505050565b6000612dfc83836040518060400160405280601881526020017f536166654d6174683a206d6f64756c6f206279207a65726f0000000000000000815250614007565b6000612dfc83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061403b565b60008184841115612fc85760405162461bcd60e51b8152600401610cee9190615257565b505050900390565b6000612fda6121b7565b6000818152600e602052604081209192509061302c90849083612ffb610bc7565b6001600160a01b031681526020810191909152604001600020546effffffffffffffffffffffffffffff1690612e56565b90506000600f600061303c610bc7565b6001600160a01b0316815260208101919091526040016000205470010000000000000000000000000000000090046effffffffffffffffffffffffffffff16905060018314156130c657600081116130a65760405162461bcd60e51b8152600401610cee90615597565b808211156130c65760405162461bcd60e51b8152600401610cee90615886565b620f42408410156130e95760405162461bcd60e51b8152600401610cee90615673565b6130f282614072565b6000848152600e6020526040812090613109610bc7565b6001600160a01b031681526020808201929092526040908101600090812080547fffffffffffffffffffffffffffffffffff000000000000000000000000000000166effffffffffffffffffffffffffffff95861617905586815260149092529020546131809161317b911686612e56565b614072565b600084815260146020526040812080547fffffffffffffffffffffffffffffffffff000000000000000000000000000000166effffffffffffffffffffffffffffff9390931692909217909155600f906131d8610bc7565b6001600160a01b03168152602081019190915260400160002054600160f81b900460ff16610dfc5761320983612ebd565b600f6000613215610bc7565b6001600160a01b031681526020810191909152604001600020805460ff92909216600160f81b027effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90921691909117905550505050565b6001600160a01b0383166132915760405162461bcd60e51b8152600401610cee906159ae565b6001600160a01b0382166132b75760405162461bcd60e51b8152600401610cee90615495565b6001600160a01b0380841660008181526002602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590613312908590615cc1565b60405180910390a3505050565b61332881614072565b6001600160a01b039092166000908152600f6020526040902080546effffffffffffffffffffffffffffff93909316700100000000000000000000000000000000027fff000000000000000000000000000000ffffffffffffffffffffffffffffffff9093169290921790915550565b6001600160a01b0383166133be5760405162461bcd60e51b8152600401610cee90615951565b6001600160a01b0382166133e45760405162461bcd60e51b8152600401610cee906152c8565b6133ef8383836140a3565b61342c81604051806060016040528060268152602001615d34602691396001600160a01b0386166000908152600160205260409020549190612fa4565b6001600160a01b03808516600090815260016020526040808220939093559084168152205461345b9082612e56565b6001600160a01b0380841660008181526001602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90613312908590615cc1565b6001600160a01b0382166134d35760405162461bcd60e51b8152600401610cee906158f4565b6134df826000836140a3565b61351c81604051806060016040528060228152602001615d12602291396001600160a01b0385166000908152600160205260409020549190612fa4565b6001600160a01b0383166000908152600160205260409020556003546135429082612e7b565b6003556040516000906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90613583908590615cc1565b60405180910390a35050565b61359881611ab6565b6135b45760405162461bcd60e51b8152600401610cee9061584f565b6135bc614d72565b506000818152601460209081526040918290208251808401909352546effffffffffffffffffffffffffffff811683526f0100000000000000000000000000000090046001600160801b03169082018190521561362b5760405162461bcd60e51b8152600401610cee90615ab0565b60008211801561363b5750601782105b6136575760405162461bcd60e51b8152600401610cee906158bd565b81600114156137035780516136849061143f906effffffffffffffffffffffffffffff16620f4240612ee0565b6001600160801b0316602082018190526136a057600160208201525b60209081015160008381526014909252604090912080546001600160801b039092166f01000000000000000000000000000000027fff00000000000000000000000000000000ffffffffffffffffffffffffffffff909216919091179055610cb6565b613711610a80836001612e7b565b61372d5760405162461bcd60e51b8152600401610cee906156aa565b60006137376116aa565b82519091506000908290613764906effffffffffffffffffffffffffffff16670de0b6b3a7640000612dc2565b8161376b57fe5b049050692855b982aee678b00000811015613887576137c361143f613794600a6202e80c612dc2565b8551611d6e906effffffffffffffffffffffffffffff16611ad6876137bd60096202e80c612dc2565b90612dc2565b6001600160801b0316602084018190528351600091906137fc906effffffffffffffffffffffffffffff16670de0b6b3a7640000612dc2565b8161380357fe5b60208087015160008981526014909252604090912080546001600160801b039092166f01000000000000000000000000000000027fff00000000000000000000000000000000ffffffffffffffffffffffffffffff9092169190911790550490506138813061387c692855b982aee678b0000084612e7b565b6134ad565b50613904565b82516138ab9061143f906effffffffffffffffffffffffffffff166202e80c612ee0565b600085815260146020526040902080546001600160801b03929092166f01000000000000000000000000000000027fff00000000000000000000000000000000ffffffffffffffffffffffffffffff9092169190911790555b83600a1415610dfc57600060025b600a811161395a576000818152601460205260409020546139509083906f0100000000000000000000000000000090046001600160801b0316612e56565b9150600101613912565b5060099004600c5550505050565b421190565b60016001600160a01b03821660009081527f63dac8ac72609a2437a2da33ae5c3341a805b2815f084aeb7a66b5dcf5c8eb596020526040902054600160f81b900460ff1660018111156139bc57fe5b14156139c757610cb6565b6001600160a01b0381166000908152600f6020526040902054600160f81b900460ff166139f357610cb6565b613a00635f71d040613db5565b15613a0a57610cb6565b6000613a14611d15565b6001600160a01b0383166000908152600f6020526040902054909150600160f81b900460ff165b81811015611c025760016000828152600e602090815260408083206001600160a01b0388168452909152902054600160f81b900460ff166001811115613a7d57fe5b1415613a8857613b63565b613a90614d72565b506000818152601460209081526040918290208251808401909352546effffffffffffffffffffffffffffff811683526f0100000000000000000000000000000090046001600160801b0316908201819052613afe5760405162461bcd60e51b8152600401610cee90615ae7565b6000828152600e602090815260408083206001600160a01b0388168452909152902080547effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16600160f81b179055613b5682858361455d565b613b618285836147d4565b505b600101613a3b565b613b73614d72565b60116000846005811115613b8357fe5b6005811115613b8e57fe5b8152602080820192909252604090810160002081518083019092525463ffffffff80821680845264010000000090920416928201929092529150613bd190613968565b613bed5760405162461bcd60e51b8152600401610cee90615a42565b613bf5614d72565b60126000856005811115613c0557fe5b6005811115613c1057fe5b8152602080820192909252604090810160009081206001600160a01b038716825283528181208251808401909352546001600160801b038082168085527001000000000000000000000000000000009092041683850181905293860151865193955090939263ffffffff91821691613c9391613c8c9116613d5c565b8590612dc2565b81613c9a57fe5b04905082811115613ca85750815b818111613cc75760405162461bcd60e51b8152600401610cee906155ce565b6000613cd38284612e7b565b9050613cde82612e03565b601260008a6005811115613cee57fe5b6005811115613cf957fe5b8152602080820192909252604090810160009081206001600160a01b038c168252909252902080546001600160801b03928316700100000000000000000000000000000000029216919091179055613d52308883613398565b5050505050505050565b6000610ece4283612e7b565b601660005260146020527f61dccb1ed53f90936bb85f76ea5b84a7d698d504a213db86a4df73c05a00c8d9546f0100000000000000000000000000000090046001600160801b0316151590565b6000610ece613dc383613968565b1590565b613dcf614dd5565b613dd7614dd5565b506001600160a01b0382166000908152601060209081526040918290208251608081018452815463ffffffff808216835264010000000082041693820193909352680100000000000000009092046001600160801b0316928201929092526001909101546060820152613e4983614b93565b613e545790506119eb565b602081015163ffffffff166000613e6a85611aee565b90506000613e76612d93565b905080156000613e9d613e92613e8b87613d5c565b8690612dc2565b606088015190612e56565b90508115613eff57606086018190528551613ecf90613ec19063ffffffff16613d5c565b8281613ec957fe5b04612e03565b6001600160801b03166040870152613ee642612e30565b63ffffffff166020870152509394506119eb9350505050565b6000613f2284611ad662278d006137bd62278d00613f1c8a613d5c565b90612f62565b9050808610613f375760608701829052613fe6565b6000613f438288612e7b565b90506000613f5f613f548884612dc2565b60608b015190612e56565b905085831415613f9c57613f89613ec18a6000015163ffffffff1685612e7b90919063ffffffff16565b6001600160801b031660408a0152613fcb565b62278d008211613fb357613f8962278d0082613ec9565b613fbc87612e03565b6001600160801b031660408a01525b613fde613fd784613d5c565b8890612dc2565b60608a015250505b613fef42612e30565b63ffffffff1660208801525094979650505050505050565b600081836140285760405162461bcd60e51b8152600401610cee9190615257565b5082848161403257fe5b06949350505050565b6000818361405c5760405162461bcd60e51b8152600401610cee9190615257565b50600083858161406857fe5b0495945050505050565b60006effffffffffffffffffffffffffffff821115612e2c5760405162461bcd60e51b8152600401610cee906153ca565b6140ac83614b93565b156140ba576140ba8361396d565b6140c7635f8ed140613db5565b156143655760016140db635f71d040613968565b156140eb576140e8611d15565b90505b6140f484614b93565b156141b3576000818152600e602090815260408083206001600160a01b03881684529091529020546141469061143f906f0100000000000000000000000000000090046001600160801b031684612e7b565b6000828152600e602090815260408083206001600160a01b0389168452909152902080546001600160801b03929092166f01000000000000000000000000000000027fff00000000000000000000000000000000ffffffffffffffffffffffffffffff9092169190911790555b6141bc83614b93565b15614363576141c9614cd9565b506001600160a01b0383166000908152600f6020908152604091829020825160608101845290546001600160801b038116825270010000000000000000000000000000000081046effffffffffffffffffffffffffffff1692820192909252600160f81b90910460ff16918101829052906142975761424782612ebd565b6001600160a01b0385166000908152600f60205260409020805460ff92909216600160f81b027effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092169190911790555b6001600160a01b0385163014614361576000828152600e602090815260408083206001600160a01b03881684529091529020546142f49061143f906f0100000000000000000000000000000090046001600160801b031685612e56565b6000838152600e602090815260408083206001600160a01b0389168452909152902080546001600160801b03929092166f01000000000000000000000000000000027fff00000000000000000000000000000000ffffffffffffffffffffffffffffff9092169190911790555b505b505b600d5461454b5761437583614b93565b156143f9576001600160a01b0383166000908152600f60205260409020546143aa9061143f906001600160801b031683612e7b565b6001600160a01b0384166000908152600f6020526040902080547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166001600160801b03929092169190911790555b61440282614b93565b1561454b576001600160a01b0382166000908152600f60205260409020546144379061143f906001600160801b031683612e56565b6001600160a01b0383166000908152600f6020908152604080832080547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166001600160801b03959095169490941790935560109052205463ffffffff1661454b576144a242612e30565b6001600160a01b038316600090815260106020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001663ffffffff929092169190911790556144f642612e30565b6001600160a01b0383166000908152601060205260409020805463ffffffff92909216640100000000027fffffffffffffffffffffffffffffffffffffffffffffffff00000000ffffffff9092169190911790555b61455483614bc8565b611c0282614bc8565b614565614d89565b6000848152600e602090815260408083206001600160a01b0387168452825291829020825160608101845281546effffffffffffffffffffffffffffff811682526f0100000000000000000000000000000081046001600160801b03169382019390935292909190830190600160f81b900460ff1660018111156145e557fe5b60018111156145f057fe5b815250509050600082602001516001600160801b0316614636670de0b6b3a764000084600001516effffffffffffffffffffffffffffff16612dc290919063ffffffff16565b8161463d57fe5b04905060006146628284602001516001600160801b0316612e5690919063ffffffff16565b905061466d81612e03565b6000878152600e602090815260408083206001600160a01b038a168452909152902080546001600160801b03929092166f01000000000000000000000000000000027fff00000000000000000000000000000000ffffffffffffffffffffffffffffff90921691909117905560168610156147c15761474161143f82600e60006146f88b6001612e56565b8152602080820192909252604090810160009081206001600160a01b038c1682529092529020546f0100000000000000000000000000000090046001600160801b031690612e56565b600e6000614750896001612e56565b8152602080820192909252604090810160009081206001600160a01b038a168252909252902080546001600160801b03929092166f01000000000000000000000000000000027fff00000000000000000000000000000000ffffffffffffffffffffffffffffff9092169190911790555b6147cc308684613398565b505050505050565b60158311156147e257611c02565b6147ea614d89565b6000848152600e602090815260408083206001600160a01b0387168452825291829020825160608101845281546effffffffffffffffffffffffffffff811682526f0100000000000000000000000000000081046001600160801b03169382019390935292909190830190600160f81b900460ff16600181111561486a57fe5b600181111561487557fe5b9052509050600060018514156148b05760208201516064906148a1906001600160801b03166005612dc2565b816148a857fe5b049050614a1a565b60016000600e816148c18985612e7b565b8152602080820192909252604090810160009081206001600160a01b038a1682529092529020546f0100000000000000000000000000000090046001600160801b031690508015801590614935575060208401516001600160801b0316606461492b836065612dc2565b8161493257fe5b04105b1561493f57600291505b6020808601518651868301516001600160a01b038a1660009081527fa7c5ba7114a813b50159add3a36832908dc83db71d0b9a24c2ad0f83be9582079094526040909320546001600160801b03928316936effffffffffffffffffffffffffffff90921692918216916002916006916f0100000000000000000000000000000090910416156149d0575060059050600f5b6149e26202e80c6137bd606488612dc2565b614a08886137bd86816149f5878b612dc2565b611adc6202e80c6137bd8e818d8d612e56565b81614a0f57fe5b049750505050505050505b3060009081527f7e7fa33969761a458e04f477e039a608702b4f924981d6653935a8319a08ad7b60205260409020546001600160801b031681811015614a5e578091505b6001600160a01b03851660009081527f7e7fa33969761a458e04f477e039a608702b4f924981d6653935a8319a08ad7b6020526040902054614aad9061143f906001600160801b031684612e56565b6001600160a01b03861660009081527f7e7fa33969761a458e04f477e039a608702b4f924981d6653935a8319a08ad7b6020526040902080547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166001600160801b0392909216919091179055614b2761143f8284612e7b565b3060009081527f7e7fa33969761a458e04f477e039a608702b4f924981d6653935a8319a08ad7b6020526040902080547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166001600160801b0392909216919091179055505050505050565b60006001600160a01b038216301480614bb357506001600160a01b038216155b15614bc0575060006119eb565b506001919050565b6001600160a01b03811660009081526010602052604090205463ffffffff64010000000090910416421415614bfc57610cb6565b614c0581613dc7565b6001600160a01b03919091166000908152601060209081526040918290208351815492850151938501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000090931663ffffffff918216177fffffffffffffffffffffffffffffffffffffffffffffffff00000000ffffffff166401000000009190941602929092177fffffffffffffffff00000000000000000000000000000000ffffffffffffffff16680100000000000000006001600160801b0390921691909102178155606090910151600190910155565b604080516060810182526000808252602082018190529181019190915290565b604051806102c001604052806016905b614d11614d89565b815260200190600190039081614d095790505090565b6040518060c001604052806006905b614d3e614d72565b815260200190600190039081614d365790505090565b60405180608001604052806004906020820280368337509192915050565b604080518082019091526000808252602082015290565b60408051606081018252600080825260208201819052909182015290565b604051806102c001604052806016905b614dbf614d72565b815260200190600190039081614db75790505090565b60408051608081018252600080825260208201819052918101829052606081019190915290565b803560048110610ece57600080fd5b600060208284031215614e1c578081fd5b8135612dfc81615cef565b60008060408385031215614e39578081fd5b8235614e4481615cef565b91506020830135614e5481615cef565b809150509250929050565b600080600060608486031215614e73578081fd5b8335614e7e81615cef565b92506020840135614e8e81615cef565b929592945050506040919091013590565b60008060408385031215614eb1578182fd5b8235614ebc81615cef565b9150614ecb8460208501614dfc565b90509250929050565b60008060408385031215614ee6578182fd5b8235614ef181615cef565b946020939093013593505050565b600060208284031215614f10578081fd5b81518015158114612dfc578182fd5b600080600060608486031215614e73578283fd5b600060208284031215614f44578081fd5b612dfc8383614dfc565b600060208284031215614f5f578081fd5b8135612dfc81615d04565b60008060408385031215614f7c578182fd5b8235614e4481615d04565b600080600060608486031215614f9b578283fd5b8335614e7e81615d04565b600060208284031215614fb7578081fd5b5035919050565b600060208284031215614fcf578081fd5b5051919050565b60008060408385031215614fe8578182fd5b823591506020830135614e5481615cef565b60008060006060848603121561500e578081fd5b505081359360208301359350604090920135919050565b600061503183836150cc565b505060600190565b80516001600160801b039081168352602091820151169082015260400190565b8060005b6004811015610dfc578151151584526020938401939091019060010161505d565b15159052565b600082845282826020860137806020848601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f85011685010190509392505050565b6effffffffffffffffffffffffffffff81511682526001600160801b03602082015116602083015260408101516002811061510357fe5b806040840152505050565b80516001600160801b031682526020808201516effffffffffffffffffffffffffffff169083015260409081015160ff16910152565b6001600160a01b0391909116815260200190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b60006001600160a01b03851682526040602083015261519f604083018486615084565b95945050505050565b60006001600160a01b0386168252846020830152606060408301526151d1606083018486615084565b9695505050505050565b6001600160a01b03929092168252602082015260400190565b6105808101818360005b601681101561524357815180516effffffffffffffffffffffffffffff1684526020908101516001600160801b031681850152604090930192909101906001016151fe565b50505092915050565b901515815260200190565b6000602080835283518082850152825b8181101561528357858101830151858201604001528201615267565b818111156152945783604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201527f6573730000000000000000000000000000000000000000000000000000000000606082015260800190565b6020808252601a908201527f546f6b656e73616c65206973206e6f742070726f636573736564000000000000604082015260600190565b60208082526018908201527f50726f6475637420616c7265616479206c61756e636865640000000000000000604082015260600190565b60208082526010908201527f75696e74313238206f766572666c6f7700000000000000000000000000000000604082015260600190565b60208082526010908201527f75696e74313230206f766572666c6f7700000000000000000000000000000000604082015260600190565b60208082526016908201527f416c726561647920666f7263652072656c656173656400000000000000000000604082015260600190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201527f6464726573730000000000000000000000000000000000000000000000000000606082015260800190565b60208082526022908201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560408201527f7373000000000000000000000000000000000000000000000000000000000000606082015260800190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b6020808252600e908201527f75696e7438206f766572666c6f77000000000000000000000000000000000000604082015260600190565b6020808252600e908201527f4465706f7369747320656e646564000000000000000000000000000000000000604082015260600190565b6020808252600f908201527f4e6f742077686974656c69737465640000000000000000000000000000000000604082015260600190565b60208082526015908201527f496e73756666696369656e7420756e6c6f636b65640000000000000000000000604082015260600190565b60208082526019908201527f546f6b656e73616c65206e6f7420737461727465642079657400000000000000604082015260600190565b6020808252601a908201527f43757272656e7420707269636520697320746f6f20736d616c6c000000000000604082015260600190565b6020808252601f908201527f4c657373207468616e206d696e696d756d20616d6f756e742031207573646300604082015260600190565b6020808252601b908201527f50726576696f757320726f756e64206e6f742070726570617265640000000000604082015260600190565b60208082526014908201527f43616e6e6f742077697468647261772074686973000000000000000000000000604082015260600190565b60208082526019908201527f496e73756666697369656e74206c6f636b65642066756e647300000000000000604082015260600190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60408201527f7700000000000000000000000000000000000000000000000000000000000000606082015260800190565b6020808252600f908201527f75696e743332206f766572666c6f770000000000000000000000000000000000604082015260600190565b60208082526013908201527f4f6e6c7920616674657220313020726f756e6400000000000000000000000000604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526017908201527f4465706f73697420726f756e64206e6f7420656e646564000000000000000000604082015260600190565b60208082526018908201527f4465706f736974206c696d697420697320726561636865640000000000000000604082015260600190565b60208082526012908201527f526f756e64206973206e6f742076616c69640000000000000000000000000000604082015260600190565b60208082526021908201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360408201527f7300000000000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460408201527f6472657373000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526024908201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460408201527f7265737300000000000000000000000000000000000000000000000000000000606082015260800190565b6020808252601d908201527f43616e6e6f74207472616e736665722061667465722072656c65617365000000604082015260600190565b6020808252601c908201527f52656c656173696e6720686173206e6f20737461727465642079657400000000604082015260600190565b60208082526019908201527f4e6f74207a65726f206164647265737320726571756972656400000000000000604082015260600190565b60208082526016908201527f526f756e6420616c726561647920707265706172656400000000000000000000604082015260600190565b60208082526015908201527f526f756e64206973206e6f742070726570617265640000000000000000000000604082015260600190565b60208082526017908201527f4e6f7468696e6720746f20666f72636520756e6c6f636b000000000000000000604082015260600190565b6020808252601a908201527f546f6b656e73616c65206973206e6f7420656e64656420796574000000000000604082015260600190565b60208082526015908201527f5072696365206973206f7574206f662072616e67650000000000000000000000604082015260600190565b60608101610ece82846150cc565b60608101610ece828461510e565b610ae08101615bee828961510e565b606082018760005b6016811015615c1b57615c0a838351615025565b925060209190910190600101615bf6565b5050506108a082018660005b6006811015615c4c57615c3b838351615039565b925060209190910190600101615c27565b505050615c5d610a2083018661507e565b615c6b610a40830185615059565b82610ac0830152979650505050505050565b6effffffffffffffffffffffffffffff9290921682526001600160801b0316602082015260400190565b6001600160801b0392831681529116602082015260400190565b90815260200190565b63ffffffff92831681529116602082015260400190565b60ff91909116815260200190565b6001600160a01b0381168114610cb657600080fd5b60068110610cb657600080fdfe45524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e20616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122095202c00692f46c7242f867d579a62502759b59647effcb74c4ded33c67ce3f164736f6c634300070000339bfbaa59f8e10e7868f8b402de9d605a390c45ddaebd8c9de3c6f31e733c87ff08037d7b151cc412d25674a4e66b334d9ae9d2e5517a7feaae5cdb828bf1c6287e7fa33969761a458e04f477e039a608702b4f924981d6653935a8319a08ad7b45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365251164fe1d8864fe5e86082eae9c288bc2b58695a4d28538dfe86e9e4f175585ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef4ad3b33220dddc71b994a52d72c06b10862965f7d926534c05c00fb7e819e7b7c550213cee30afd5e67ccba7be3d381bbc169034ae08eb3ec9168caca9fe55e717bc176d2408558f6e4111feebc3cab4e16b63e967be91cde721f4c8a488b55200000000000000000000000049497a98451f64c875aca3b6f48db37943850009