608060405234801561001057600080fd5b5061344d806100206000396000f3fe608060405234801561001057600080fd5b50600436106101575760003560e01c8063715018a6116100c3578063e985e9c51161007c578063e985e9c5146102f3578063f242432a1461032f578063f2fde38b14610342578063f399e22e14610355578063fae9261214610368578063fbbaeb981461037b57600080fd5b8063715018a6146102845780638da5cb5b1461028c578063a22cb465146102a7578063a230c524146102ba578063ca6d56dc146102cd578063e0f095c1146102e057600080fd5b80632eb2c2d6116101155780632eb2c2d6146101f557806348a08bfb1461020857806348f562021461021b5780634a947ac61461022e5780634e1273f4146102415780635f6825251461026157600080fd5b8062fdd58e1461015c57806301ffc9a71461018257806306fdde03146101a55780630b1ca49a146101ba5780630e89341c146101cf578063267292f5146101e2575b600080fd5b61016f61016a366004612693565b61038e565b6040519081526020015b60405180910390f35b6101956101903660046127cc565b61042a565b6040519015158152602001610179565b6101ad61047a565b6040516101799190612ca0565b6101cd6101c8366004612478565b610508565b005b6101ad6101dd36600461291e565b6105ed565b61016f6101f0366004612804565b610681565b6101cd6102033660046124c4565b6106ac565b61016f610216366004612804565b610711565b6101cd61022936600461277c565b61073f565b61016f61023c366004612843565b6107e7565b61025461024f3660046126bc565b610bc2565b6040516101799190612b4f565b61027461026f366004612936565b610d23565b6040516101799493929190612f31565b6101cd610e68565b6097546040516001600160a01b039091168152602001610179565b6101cd6102b536600461260c565b610e9e565b6101956102c8366004612478565b610ead565b6101cd6102db366004612478565b610ecb565b6101cd6102ee366004612569565b610faf565b610195610301366004612492565b6001600160a01b03918216600090815260666020908152604080832093909416825291909152205460ff1690565b6101cd61033d3660046125aa565b610fd1565b6101cd610350366004612478565b610fe9565b6101cd610363366004612635565b611084565b6101cd610376366004612478565b611180565b6101cd610389366004612804565b61120e565b60006001600160a01b0383166103ff5760405162461bcd60e51b815260206004820152602b60248201527f455243313135353a2062616c616e636520717565727920666f7220746865207a60448201526a65726f206164647265737360a81b60648201526084015b60405180910390fd5b5060008181526065602090815260408083206001600160a01b03861684529091529020545b92915050565b60006001600160e01b03198216636cdb3d1360e11b148061045b57506001600160e01b031982166303a24d0760e21b145b8061042457506301ffc9a760e01b6001600160e01b0319831614610424565b60d1805461048790613223565b80601f01602080910402602001604051908101604052809291908181526020018280546104b390613223565b80156105005780601f106104d557610100808354040283529160200191610500565b820191906000526020600020905b8154815290600101906020018083116104e357829003601f168201915b505050505081565b6097546001600160a01b031633146105325760405162461bcd60e51b81526004016103f690612e27565b61053b81610ead565b6105955760405162461bcd60e51b815260206004820152602560248201527f41646d696e4163636573733a204e6f74206d656d626572206f662077686974656044820152643634b9ba1760d91b60648201526084016103f6565b6001600160a01b038116600081815260c96020908152604091829020805460ff1916905590519182527f6e76fb4c77256006d9c38ec7d82b45a8c8f3c27b1d6766fffc42dfb8de68449291015b60405180910390a150565b6060606780546105fc90613223565b80601f016020809104026020016040519081016040528092919081815260200182805461062890613223565b80156106755780601f1061064a57610100808354040283529160200191610675565b820191906000526020600020905b81548152906001019060200180831161065857829003601f168201915b50505050509050919050565b600060cf8383604051610695929190612a4d565b908152602001604051809103902054905092915050565b60005b83518110156106fc576106ea86868684815181106106dd57634e487b7160e01b600052603260045260246000fd5b602002602001015161138b565b806106f4816132ce565b9150506106af565b5061070a8585858585611433565b5050505050565b60008060cc8484604051610726929190612a4d565b9081526040519081900360200190205491505092915050565b3361074981610ead565b6107655760405162461bcd60e51b81526004016103f690612eef565b600060cc8484604051610779929190612a4d565b908152604080516020928190038301812054600081815260cd90945291909220805460ff191688151517905591507fdcdc92664b96bc8c245a77475aa8005e1897fccedc5b8ee28a07d17fc940161f906107d890869086908990612b90565b60405180910390a15050505050565b6000336107f381610ead565b61080f5760405162461bcd60e51b81526004016103f690612eef565b600060cc8989604051610823929190612a4d565b90815260405190819003602001902054905080156108995760405162461bcd60e51b815260206004820152602d60248201527f436f6c6c65637461626c65455243313135353a20546f6b656e2054797065206160448201526c6c72656164792065786973747360981b60648201526084016103f6565b8361090c5760405162461bcd60e51b815260206004820152603760248201527f436f6c6c65637461626c65455243313135353a2041746c65617374206f6e652060448201527f56494420697320726571756972656420746f206d696e7400000000000000000060648201526084016103f6565b61091a60ca80546001019055565b600061092560ca5490565b90508060cc8b8b60405161093a929190612a4d565b908152604080516020928190038301902092909255600083815260cd82528281208b51815460ff1916901515178155918b01516001830155918a01516002909101555b8751811015610a285760008882815181106109a857634e487b7160e01b600052603260045260246000fd5b602090810291909101810151600085815260ce8352604080822080546001808201835591845292859020845160049094020180546001600160a01b0319166001600160a01b039094169390931783559383015193820193909355918101516002830155606001516003909101555080610a20816132ce565b91505061097d565b5060005b85811015610b4f5760cf878783818110610a5657634e487b7160e01b600052603260045260246000fd5b9050602002810190610a689190612fb8565b604051610a76929190612a4d565b908152602001604051809103902054600014610aea5760405162461bcd60e51b815260206004820152602d60248201527f436f6c6c65637461626c65455243313135353a205649442068617320616c726560448201526c18591e481899595b881d5cd959609a1b60648201526084016103f6565b8160cf888884818110610b0d57634e487b7160e01b600052603260045260246000fd5b9050602002810190610b1f9190612fb8565b604051610b2d929190612a4d565b9081526040519081900360200190205580610b47816132ce565b915050610a2c565b50610b5b8a8a876114c3565b60cb54610b72906001600160a01b03166001610e9e565b7ffa400137eb8660a213f5b3ac2d3b3cfb75831f2133f9a9082753c3ab75c02cad8a8a838b8b8b8b604051610bad9796959493929190612bb6565b60405180910390a19998505050505050505050565b60608151835114610c275760405162461bcd60e51b815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e677468604482015268040dad2e6dac2e8c6d60bb1b60648201526084016103f6565b600083516001600160401b03811115610c5057634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015610c79578160200160208202803683370190505b50905060005b8451811015610d1b57610ce0858281518110610cab57634e487b7160e01b600052603260045260246000fd5b6020026020010151858381518110610cd357634e487b7160e01b600052603260045260246000fd5b602002602001015161038e565b828281518110610d0057634e487b7160e01b600052603260045260246000fd5b6020908102919091010152610d14816132ce565b9050610c7f565b509392505050565b610d49604051806060016040528060001515815260200160008152602001600081525090565b6060806000808711610d6d5760405162461bcd60e51b81526004016103f690612cfb565b600087815260cd6020908152604080832060ce90925291829020915160609290839060d090610d9f908c908c90612a4d565b90815260408051918290036020908101832054606084018352865460ff9081161515855260018801548584015260029097015484840152855483518184028101840190945280845293961692859160009084015b82821015610e50576000848152602090819020604080516080810182526004860290920180546001600160a01b03168352600180820154848601526002820154928401929092526003015460608301529083529092019101610df3565b50505050925094509450945094505093509350935093565b6097546001600160a01b03163314610e925760405162461bcd60e51b81526004016103f690612e27565b610e9c60006115cc565b565b610ea933838361161e565b5050565b6001600160a01b0316600090815260c9602052604090205460ff1690565b6097546001600160a01b03163314610ef55760405162461bcd60e51b81526004016103f690612e27565b610efe81610ead565b15610f5b5760405162461bcd60e51b815260206004820152602760248201527f41646d696e4163636573733a2041646472657373206973206d656d6265722061604482015266363932b0b23c9760c91b60648201526084016103f6565b6001600160a01b038116600081815260c96020908152604091829020805460ff1916600117905590519182527fb251eb052afc73ffd02ffe85ad79990a8b3fed60d76dbc2fa2fdd7123dffd91491016105e2565b610fcb8484848460405180602001604052806000815250610fd1565b50505050565b610fdc85858561138b565b61070a85858585856116ff565b6097546001600160a01b031633146110135760405162461bcd60e51b81526004016103f690612e27565b6001600160a01b0381166110785760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016103f6565b611081816115cc565b50565b600054610100900460ff1661109f5760005460ff16156110a3565b303b155b6110bf5760405162461bcd60e51b81526004016103f690612d8f565b600054610100900460ff161580156110e1576000805461ffff19166101011790555b60cb80546001600160a01b0319166001600160a01b038516179055604080516060810190915260358082526133e3602083013980516111289160d191602090910190612185565b5060008261113530611786565b604051602001611146929190612a5d565b6040516020818303038152906040529050611160816118e9565b611168611919565b50801561117b576000805461ff00191690555b505050565b3361118a81610ead565b6111a65760405162461bcd60e51b81526004016103f690612eef565b6001600160a01b0382166111b957600080fd5b60cb80546001600160a01b0319166001600160a01b0384169081179091556040519081527fad18b04a771699fe9d364064c5ccf183af0f101f3e9c34b5cf9de527cafe64e19060200160405180910390a15050565b60cb546001600160a01b0316331461128e5760405162461bcd60e51b815260206004820152603a60248201527f436f6c6c65637461626c65455243313135353a204f6e6c79206d61726b65747060448201527f6c6163652063616e2063616c6c2074686973206d6574686f642e00000000000060648201526084016103f6565b600060cf83836040516112a2929190612a4d565b9081526040519081900360200190205460cb549091506000906112ce906001600160a01b03168361038e565b116113295760405162461bcd60e51b815260206004820152602560248201527f436f6c6c65637461626c65455243313135353a204e4654206e6f7420696e20456044820152645343524f5760d81b60648201526084016103f6565b60d0838360405161133b929190612a4d565b9081526040519081900360200190205460ff1661117b57600160d08484604051611366929190612a4d565b908152604051908190036020019020805491151560ff19909216919091179055505050565b600081815260cd602052604090205460ff161515600114806113ba575060cb546001600160a01b038381169116145b806113d2575060cb546001600160a01b038481169116145b61117b5760405162461bcd60e51b815260206004820152602c60248201527f436f6c6c65637461626c65455243313135353a204e4654206973206e6f74206960448201526b6e7465726f70657261626c6560a01b60648201526084016103f6565b6001600160a01b03851633148061144f575061144f8533610301565b6114b65760405162461bcd60e51b815260206004820152603260248201527f455243313135353a207472616e736665722063616c6c6572206973206e6f74206044820152711bdddb995c881b9bdc88185c1c1c9bdd995960721b60648201526084016103f6565b61070a858585858561199b565b600060cc84846040516114d7929190612a4d565b9081526020016040518091039020549050600081116115085760405162461bcd60e51b81526004016103f690612cfb565b60408051600180825281830190925260009160208083019080368337019050509050818160008151811061154c57634e487b7160e01b600052603260045260246000fd5b6020908102919091010152604080516001808252818301909252600091816020016020820280368337019050509050838160008151811061159d57634e487b7160e01b600052603260045260246000fd5b6020026020010181815250506115c433838360405180602001604052806000815250611b4e565b505050505050565b609780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b816001600160a01b0316836001600160a01b031614156116925760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c20737461747573604482015268103337b91039b2b63360b91b60648201526084016103f6565b6001600160a01b03838116600081815260666020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b03851633148061171b575061171b8533610301565b6117795760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260448201526808185c1c1c9bdd995960ba1b60648201526084016103f6565b61070a8585858585611cf0565b60408051602880825260608281019093526000919060208201818036833701905050905060005b60148110156118e25760006117c38260136131bd565b6117ce90600861317d565b6117d99060026130d5565b6117ec906001600160a01b03871661305c565b60f81b9050600060108260f81c6118039190613070565b60f81b905060008160f81c601061181a919061319c565b8360f81c61182891906131d4565b60f81b905061183682611e1a565b8561184286600261317d565b8151811061186057634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a90535061188081611e1a565b8561188c86600261317d565b61189790600161301f565b815181106118b557634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a90535050505080806118da906132ce565b9150506117ad565b5092915050565b600054610100900460ff166119105760405162461bcd60e51b81526004016103f690612e5c565b61108181611e55565b600054610100900460ff166119345760005460ff1615611938565b303b155b6119545760405162461bcd60e51b81526004016103f690612d8f565b600054610100900460ff16158015611976576000805461ffff19166101011790555b61197e611e85565b61198733610ecb565b8015611081576000805461ff001916905550565b81518351146119bc5760405162461bcd60e51b81526004016103f690612ea7565b6001600160a01b0384166119e25760405162461bcd60e51b81526004016103f690612d4a565b3360005b8451811015611ae8576000858281518110611a1157634e487b7160e01b600052603260045260246000fd5b602002602001015190506000858381518110611a3d57634e487b7160e01b600052603260045260246000fd5b60209081029190910181015160008481526065835260408082206001600160a01b038e168352909352919091205490915081811015611a8e5760405162461bcd60e51b81526004016103f690612ddd565b60008381526065602090815260408083206001600160a01b038e8116855292528083208585039055908b16825281208054849290611acd90849061301f565b9250508190555050505080611ae1906132ce565b90506119e6565b50846001600160a01b0316866001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051611b38929190612b62565b60405180910390a46115c4818787878787611eb4565b6001600160a01b038416611bae5760405162461bcd60e51b815260206004820152602160248201527f455243313135353a206d696e7420746f20746865207a65726f206164647265736044820152607360f81b60648201526084016103f6565b8151835114611bcf5760405162461bcd60e51b81526004016103f690612ea7565b3360005b8451811015611c8857838181518110611bfc57634e487b7160e01b600052603260045260246000fd5b602002602001015160656000878481518110611c2857634e487b7160e01b600052603260045260246000fd5b602002602001015181526020019081526020016000206000886001600160a01b03166001600160a01b031681526020019081526020016000206000828254611c70919061301f565b90915550819050611c80816132ce565b915050611bd3565b50846001600160a01b031660006001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051611cd9929190612b62565b60405180910390a461070a81600087878787611eb4565b6001600160a01b038416611d165760405162461bcd60e51b81526004016103f690612d4a565b33611d2f818787611d268861201f565b61070a8861201f565b60008481526065602090815260408083206001600160a01b038a16845290915290205483811015611d725760405162461bcd60e51b81526004016103f690612ddd565b60008581526065602090815260408083206001600160a01b038b8116855292528083208785039055908816825281208054869290611db190849061301f565b909155505060408051868152602081018690526001600160a01b03808916928a821692918616917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a4611e11828888888888612078565b50505050505050565b6000600a60f883901c1015611e4157611e3860f883901c6030613037565b60f81b92915050565b611e3860f883901c6057613037565b919050565b600054610100900460ff16611e7c5760405162461bcd60e51b81526004016103f690612e5c565b61108181612142565b600054610100900460ff16611eac5760405162461bcd60e51b81526004016103f690612e5c565b610e9c612155565b6001600160a01b0384163b156115c45760405163bc197c8160e01b81526001600160a01b0385169063bc197c8190611ef89089908990889088908890600401612aac565b602060405180830381600087803b158015611f1257600080fd5b505af1925050508015611f42575060408051601f3d908101601f19168201909252611f3f918101906127e8565b60015b611fef57611f4e61332b565b806308c379a01415611f885750611f63613343565b80611f6e5750611f8a565b8060405162461bcd60e51b81526004016103f69190612ca0565b505b60405162461bcd60e51b815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e20455243313135356044820152732932b1b2b4bb32b91034b6b83632b6b2b73a32b960611b60648201526084016103f6565b6001600160e01b0319811663bc197c8160e01b14611e115760405162461bcd60e51b81526004016103f690612cb3565b6040805160018082528183019092526060916000919060208083019080368337019050509050828160008151811061206757634e487b7160e01b600052603260045260246000fd5b602090810291909101015292915050565b6001600160a01b0384163b156115c45760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e61906120bc9089908990889088908890600401612b0a565b602060405180830381600087803b1580156120d657600080fd5b505af1925050508015612106575060408051601f3d908101601f19168201909252612103918101906127e8565b60015b61211257611f4e61332b565b6001600160e01b0319811663f23a6e6160e01b14611e115760405162461bcd60e51b81526004016103f690612cb3565b8051610ea9906067906020840190612185565b600054610100900460ff1661217c5760405162461bcd60e51b81526004016103f690612e5c565b610e9c336115cc565b82805461219190613223565b90600052602060002090601f0160209004810192826121b357600085556121f9565b82601f106121cc57805160ff19168380011785556121f9565b828001600101855582156121f9579182015b828111156121f95782518255916020019190600101906121de565b50612205929150612209565b5090565b5b80821115612205576000815560010161220a565b60006001600160401b0383111561223757612237613315565b60405161224e601f8501601f1916602001826132a2565b80915083815284848401111561226357600080fd5b83836020830137600060208583010152509392505050565b80356001600160a01b0381168114611e5057600080fd5b60008083601f8401126122a3578182fd5b5081356001600160401b038111156122b9578182fd5b6020830191508360208260051b85010111156122d457600080fd5b9250929050565b600082601f8301126122eb578081fd5b813560206122f882612ffc565b6040805161230683826132a2565b8481528381019250868401600786901b88018501891015612325578687fd5b865b8681101561238157608080838c03121561233f578889fd5b845161234a8161325e565b6123538461227b565b8152838801358882015285840135868201526060808501359082015286529486019490910190600101612327565b509098975050505050505050565b600082601f83011261239f578081fd5b813560206123ac82612ffc565b6040516123b982826132a2565b8381528281019150858301600585901b870184018810156123d8578586fd5b855b858110156123f6578135845292840192908401906001016123da565b5090979650505050505050565b80358015158114611e5057600080fd5b600082601f830112612423578081fd5b6124328383356020850161221e565b9392505050565b60008083601f84011261244a578182fd5b5081356001600160401b03811115612460578182fd5b6020830191508360208285010111156122d457600080fd5b600060208284031215612489578081fd5b6124328261227b565b600080604083850312156124a4578081fd5b6124ad8361227b565b91506124bb6020840161227b565b90509250929050565b600080600080600060a086880312156124db578081fd5b6124e48661227b565b94506124f26020870161227b565b935060408601356001600160401b038082111561250d578283fd5b61251989838a0161238f565b9450606088013591508082111561252e578283fd5b61253a89838a0161238f565b9350608088013591508082111561254f578283fd5b5061255c88828901612413565b9150509295509295909350565b6000806000806080858703121561257e578182fd5b6125878561227b565b93506125956020860161227b565b93969395505050506040820135916060013590565b600080600080600060a086880312156125c1578283fd5b6125ca8661227b565b94506125d86020870161227b565b9350604086013592506060860135915060808601356001600160401b03811115612600578182fd5b61255c88828901612413565b6000806040838503121561261e578182fd5b6126278361227b565b91506124bb60208401612403565b60008060408385031215612647578182fd5b6126508361227b565b915060208301356001600160401b0381111561266a578182fd5b8301601f8101851361267a578182fd5b6126898582356020840161221e565b9150509250929050565b600080604083850312156126a5578182fd5b6126ae8361227b565b946020939093013593505050565b600080604083850312156126ce578182fd5b82356001600160401b03808211156126e4578384fd5b818501915085601f8301126126f7578384fd5b8135602061270482612ffc565b60405161271182826132a2565b8381528281019150858301600585901b870184018b1015612730578889fd5b8896505b84871015612759576127458161227b565b835260019690960195918301918301612734565b509650508601359250508082111561276f578283fd5b506126898582860161238f565b600080600060408486031215612790578081fd5b61279984612403565b925060208401356001600160401b038111156127b3578182fd5b6127bf86828701612439565b9497909650939450505050565b6000602082840312156127dd578081fd5b8135612432816133cc565b6000602082840312156127f9578081fd5b8151612432816133cc565b60008060208385031215612816578182fd5b82356001600160401b0381111561282b578283fd5b61283785828601612439565b90969095509350505050565b60008060008060008086880360c081121561285c578485fd5b87356001600160401b0380821115612872578687fd5b61287e8b838c01612439565b90995097508791506060601f1984011215612897578687fd5b60405192506128a583613283565b6128b160208b01612403565b835260408a0135602084015260608a0135604084015282965060808a01359250808311156128dd578384fd5b6128e98b848c016122db565b955060a08a01359250808311156128fe578384fd5b505061290c89828a01612292565b979a9699509497509295939492505050565b60006020828403121561292f578081fd5b5035919050565b60008060006040848603121561294a578081fd5b8335925060208401356001600160401b038111156127b3578182fd5b6000815180845260208085019450808401835b838110156129be57815180516001600160a01b031688528381015184890152604080820151908901526060908101519088015260809096019590820190600101612979565b509495945050505050565b6000815180845260208085019450808401835b838110156129be578151875295820195908201906001016129dc565b60008151808452612a108160208601602086016131f7565b601f01601f19169290920160200192915050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b8183823760009101908152919050565b60008351612a6f8184602088016131f7565b61060f60f31b9083019081528351612a8e8160028401602088016131f7565b642f7b69647d60d81b60029290910191820152600701949350505050565b6001600160a01b0386811682528516602082015260a060408201819052600090612ad8908301866129c9565b8281036060840152612aea81866129c9565b90508281036080840152612afe81856129f8565b98975050505050505050565b6001600160a01b03868116825285166020820152604081018490526060810183905260a060808201819052600090612b44908301846129f8565b979650505050505050565b60208152600061243260208301846129c9565b604081526000612b7560408301856129c9565b8281036020840152612b8781856129c9565b95945050505050565b604081526000612ba4604083018587612a24565b90508215156020830152949350505050565b60e081526000612bca60e08301898b612a24565b60208881850152612bf4604085018980511515825260208082015190830152604090810151910152565b83820360a0850152612c068288612966565b84810360c08601528581529150808201600586901b8301820187855b88811015612c8d57858303601f190184528135368b9003601e19018112612c47578788fd5b8a0180356001600160401b03811115612c5e578889fd5b8036038c1315612c6c578889fd5b612c798582898501612a24565b958701959450505090840190600101612c22565b50909d9c50505050505050505050505050565b60208152600061243260208301846129f8565b60208082526028908201527f455243313135353a204552433131353552656365697665722072656a656374656040820152676420746f6b656e7360c01b606082015260800190565b6020808252602f908201527f436f6c6c65637461626c65455243313135353a20496e76616c696420746f6b6560408201526e1b881d1e5c19481c1c9bdd9a591959608a1b606082015260800190565b60208082526025908201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604082015264647265737360d81b606082015260800190565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b6020808252602a908201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60408201526939103a3930b739b332b960b11b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60208082526028908201527f455243313135353a2069647320616e6420616d6f756e7473206c656e677468206040820152670dad2e6dac2e8c6d60c31b606082015260800190565b60208082526022908201527f41646d696e4163636573733a204163636f756e74206973206e6f742061646d69604082015261371760f11b606082015260800190565b845115158152602080860151908201526040808601519082015260c060608201526000612f6160c0830186612966565b8281036080840152845180825260208087019281019190845b82811015612f9f5784516001600160a01b031684529381019392810192600101612f7a565b505050809250505082151560a083015295945050505050565b6000808335601e19843603018112612fce578283fd5b8301803591506001600160401b03821115612fe7578283fd5b6020019150368190038213156122d457600080fd5b60006001600160401b0382111561301557613015613315565b5060051b60200190565b60008219821115613032576130326132e9565b500190565b600060ff821660ff84168060ff03821115613054576130546132e9565b019392505050565b60008261306b5761306b6132ff565b500490565b600060ff831680613083576130836132ff565b8060ff84160491505092915050565b600181815b808511156130cd5781600019048211156130b3576130b36132e9565b808516156130c057918102915b93841c9390800290613097565b509250929050565b600061243283836000826130eb57506001610424565b816130f857506000610424565b816001811461310e576002811461311857613134565b6001915050610424565b60ff841115613129576131296132e9565b50506001821b610424565b5060208310610133831016604e8410600b8410161715613157575081810a610424565b6131618383613092565b8060001904821115613175576131756132e9565b029392505050565b6000816000190483118215151615613197576131976132e9565b500290565b600060ff821660ff84168160ff0481118215151615613175576131756132e9565b6000828210156131cf576131cf6132e9565b500390565b600060ff821660ff8416808210156131ee576131ee6132e9565b90039392505050565b60005b838110156132125781810151838201526020016131fa565b83811115610fcb5750506000910152565b600181811c9082168061323757607f821691505b6020821081141561325857634e487b7160e01b600052602260045260246000fd5b50919050565b608081018181106001600160401b038211171561327d5761327d613315565b60405250565b606081018181106001600160401b038211171561327d5761327d613315565b601f8201601f191681016001600160401b03811182821017156132c7576132c7613315565b6040525050565b60006000198214156132e2576132e26132e9565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b600060033d111561334057600481823e5160e01c5b90565b600060443d10156133515790565b6040516003193d81016004833e81513d6001600160401b03816024840111818411171561338057505050505090565b82850191508151818111156133985750505050505090565b843d87010160208285010111156133b25750505050505090565b6133c1602082860101876132a2565b509095945050505050565b6001600160e01b03198116811461108157600080fdfe4c54442e494e43202d205772616e676c65722058204a6572656d7920426f6f7468202d205765737465726e2041727420446570742ea2646970667358221220c3be86de7a23298538e223e71c09750e9557621aa1fd20aa7e496458bc25fcd464736f6c63430008040033