60806040526019600755601960085560056009556005600a556019600b556019600c556005600d555f600e555f600f555f6010556009600a61004191906105d7565b622191c061004f9190610621565b6011556009600a61006091906105d7565b622191c061006e9190610621565b6012556009600a61007f91906105d7565b62035b6061008d9190610621565b6013556009600a61009e91906105d7565b622191c06100ac9190610621565b60145560036017555f60185f6101000a81548160ff0219169083151502179055505f601860016101000a81548160ff0219169083151502179055506001601860026101000a81548160ff02191690831515021790555034801561010d575f80fd5b505f61011d61043860201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35073d6be70853d9962f0bfcdc8f2225b8511b2c4165e60055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506009600a61021b91906105d7565b63068e778061022a9190610621565b60015f61023b61043860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600160035f61028b61043f60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506103b361043860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6009600a61040f91906105d7565b63068e778061041e9190610621565b60405161042b9190610671565b60405180910390a361068a565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156104e8578086048111156104c4576104c3610466565b5b60018516156104d35780820291505b80810290506104e185610493565b94506104a8565b94509492505050565b5f8261050057600190506105bb565b8161050d575f90506105bb565b8160018114610523576002811461052d5761055c565b60019150506105bb565b60ff84111561053f5761053e610466565b5b8360020a91508482111561055657610555610466565b5b506105bb565b5060208310610133831016604e8410600b84101617156105915782820a90508381111561058c5761058b610466565b5b6105bb565b61059e848484600161049f565b925090508184048111156105b5576105b4610466565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f6105e1826105c2565b91506105ec836105cb565b92506106197fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846104f1565b905092915050565b5f61062b826105c2565b9150610636836105c2565b9250828202610644816105c2565b9150828204841483151761065b5761065a610466565b5b5092915050565b61066b816105c2565b82525050565b5f6020820190506106845f830184610662565b92915050565b613648806106975f395ff3fe60806040526004361061014e575f3560e01c8063715018a6116100b5578063a9059cbb1161006e578063a9059cbb14610443578063bf474bed1461047f578063cee3e84d146104a9578063dd62ed3e146104d3578063f5b3c3bf1461050f578063fb201b1d1461054b57610155565b8063715018a61461035b5780637d1db4a51461037157806383aa62901461039b5780638da5cb5b146103c55780638f9a55c0146103ef57806395d89b411461041957610155565b80632c65469e116101075780632c65469e14610265578063313ce5671461028d578063331221d5146102b757806349bd5a5e146102df57806359f117351461030957806370a082311461031f57610155565b80630150fe4c1461015957806306fdde031461016f578063095ea7b3146101995780630faee56f146101d557806318160ddd146101ff57806323b872dd1461022957610155565b3661015557005b5f80fd5b348015610164575f80fd5b5061016d610561565b005b34801561017a575f80fd5b5061018361065c565b6040516101909190612696565b60405180910390f35b3480156101a4575f80fd5b506101bf60048036038101906101ba9190612747565b610699565b6040516101cc919061279f565b60405180910390f35b3480156101e0575f80fd5b506101e96106b6565b6040516101f691906127c7565b60405180910390f35b34801561020a575f80fd5b506102136106bc565b60405161022091906127c7565b60405180910390f35b348015610234575f80fd5b5061024f600480360381019061024a91906127e0565b6106df565b60405161025c919061279f565b60405180910390f35b348015610270575f80fd5b5061028b60048036038101906102869190612747565b6107b3565b005b348015610298575f80fd5b506102a16108e8565b6040516102ae919061284b565b60405180910390f35b3480156102c2575f80fd5b506102dd60048036038101906102d89190612864565b6108f0565b005b3480156102ea575f80fd5b506102f36109ae565b60405161030091906128ea565b60405180910390f35b348015610314575f80fd5b5061031d6109d3565b005b34801561032a575f80fd5b5061034560048036038101906103409190612903565b610b02565b60405161035291906127c7565b60405180910390f35b348015610366575f80fd5b5061036f610b48565b005b34801561037c575f80fd5b50610385610c96565b60405161039291906127c7565b60405180910390f35b3480156103a6575f80fd5b506103af610c9c565b6040516103bc91906127c7565b60405180910390f35b3480156103d0575f80fd5b506103d9610ca2565b6040516103e691906128ea565b60405180910390f35b3480156103fa575f80fd5b50610403610cc9565b60405161041091906127c7565b60405180910390f35b348015610424575f80fd5b5061042d610ccf565b60405161043a9190612696565b60405180910390f35b34801561044e575f80fd5b5061046960048036038101906104649190612747565b610d0c565b604051610476919061279f565b60405180910390f35b34801561048a575f80fd5b50610493610d29565b6040516104a091906127c7565b60405180910390f35b3480156104b4575f80fd5b506104bd610d2f565b6040516104ca919061279f565b60405180910390f35b3480156104de575f80fd5b506104f960048036038101906104f4919061292e565b610d42565b60405161050691906127c7565b60405180910390f35b34801561051a575f80fd5b5061053560048036038101906105309190612903565b610dc4565b604051610542919061279f565b60405180910390f35b348015610556575f80fd5b5061055f610de1565b005b6105696113f6565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146105f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105ec906129b6565b60405180910390fd5b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f19350505050158015610659573d5f803e3d5ffd5b50565b60606040518060400160405280600881526020017f466c617368204149000000000000000000000000000000000000000000000000815250905090565b5f6106ac6106a56113f6565b84846113fd565b6001905092915050565b60145481565b5f6009600a6106cb9190612b30565b63068e77806106da9190612b7a565b905090565b5f6106eb8484846115c0565b6107a8846106f76113f6565b6107a3856040518060600160405280602881526020016135eb6028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f61075a6113f6565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546121039092919063ffffffff16565b6113fd565b600190509392505050565b6107bb6113f6565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610847576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083e906129b6565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b81526004016108a3929190612c16565b6020604051808303815f875af11580156108bf573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108e39190612c67565b505050565b5f6009905090565b6108f86113f6565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610984576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161097b906129b6565b60405180910390fd5b846007819055508360088190555082600b8190555081600c8190555080600d819055505050505050565b60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6109db6113f6565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a5e906129b6565b60405180910390fd5b6009600a610a759190612b30565b63068e7780610a849190612b7a565b6011819055506009600a610a989190612b30565b63068e7780610aa79190612b7a565b6012819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6009600a610adc9190612b30565b63068e7780610aeb9190612b7a565b604051610af891906127c7565b60405180910390a1565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610b506113f6565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bdc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bd3906129b6565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60115481565b60175481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60125481565b60606040518060400160405280600581526020017f464c415348000000000000000000000000000000000000000000000000000000815250905090565b5f610d1f610d186113f6565b84846115c0565b6001905092915050565b60135481565b601860029054906101000a900460ff1681565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6004602052805f5260405f205f915054906101000a900460ff1681565b610de96113f6565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6c906129b6565b60405180910390fd5b601660149054906101000a900460ff1615610ec5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ebc90612cdc565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d60155f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610f613060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009600a610f4d9190612b30565b63068e7780610f5c9190612b7a565b6113fd565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fcb573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fef9190612d0e565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611075573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110999190612d0e565b6040518363ffffffff1660e01b81526004016110b6929190612d39565b6020604051808303815f875af11580156110d2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110f69190612d0e565b60165f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160045f60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061126930610b02565b5f80611273610ca2565b426040518863ffffffff1660e01b815260040161129596959493929190612d99565b60606040518083038185885af11580156112b1573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906112d69190612e0c565b50505060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611376929190612e5c565b6020604051808303815f875af1158015611392573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113b69190612c67565b506001601860016101000a81548160ff0219169083151502179055506001601660146101000a81548160ff02191690831515021790555043600681905550565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361146b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146290612ef3565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036114d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d090612f81565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516115b391906127c7565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361162e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116259061300f565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361169c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116939061309d565b60405180910390fd5b5f81116116de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116d59061312b565b60405180910390fd5b5f6116e7610ca2565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156117555750611725610ca2565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611e53576117966064611788600b54600e541161177557600754611779565b6009545b8561216590919063ffffffff16565b6121dc90919063ffffffff16565b905060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561183b575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561188e575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611971576011548211156118d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118cf90613193565b60405180910390fd5b601254826118e585610b02565b6118ef91906131b1565b1115611930576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119279061322e565b60405180910390fd5b43600160065461194091906131b1565b11156119595761194f83612225565b15611958575f80fd5b5b600e5f81548092919061196b9061324c565b91905055505b60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611a0f575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611a6d5760125482611a2185610b02565b611a2b91906131b1565b1115611a6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a639061322e565b60405180910390fd5b5b60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015611aef57503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611b3357611b306064611b22600c54600e5411611b0f57600854611b13565b600a545b8561216590919063ffffffff16565b6121dc90919063ffffffff16565b90505b60045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611bd1575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611c0957503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611c12575f90505b5f611c1c30610b02565b9050601860029054906101000a900460ff168015611c46575060185f9054906101000a900460ff16155b8015611c98575060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b8015611cb05750601860019054906101000a900460ff165b8015611cbd575060135481115b8015611ccc5750600d54600e54115b15611d8057601054431115611ce3575f600f819055505b601754600f5410611d29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d20906132dd565b60405180910390fd5b611d46611d4184611d3c84601454612236565b612236565b61224e565b5f4790505f811115611d5c57611d5b476124b7565b5b600f5f815480929190611d6e9061324c565b91905055504360108190555050611e51565b60185f9054906101000a900460ff16158015611de2575060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b8015611dfa5750601860019054906101000a900460ff165b8015611e07575060135481115b8015611e165750600d54600e54115b15611e5057611e38611e3384611e2e84601454612236565b612236565b61224e565b5f4790505f811115611e4e57611e4d476124b7565b5b505b5b505b5f811115611f5257611eab8160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461251f90919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611f4991906127c7565b60405180910390a35b611fa28260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461257c90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550612045611ff9828461257c90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461251f90919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6120e8848661257c90919063ffffffff16565b6040516120f591906127c7565b60405180910390a350505050565b5f83831115829061214a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121419190612696565b60405180910390fd5b505f838561215891906132fb565b9050809150509392505050565b5f808303612175575f90506121d6565b5f82846121829190612b7a565b9050828482612191919061335b565b146121d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121c8906133fb565b60405180910390fd5b809150505b92915050565b5f61221d83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506125c5565b905092915050565b5f80823b90505f8111915050919050565b5f8183116122445782612246565b815b905092915050565b600160185f6101000a81548160ff0219169083151502179055505f600267ffffffffffffffff81111561228457612283613419565b5b6040519080825280602002602001820160405280156122b25781602001602082028036833780820191505090505b50905030815f815181106122c9576122c8613446565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561236d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123919190612d0e565b816001815181106123a5576123a4613446565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061240b3060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846113fd565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b815260040161246d95949392919061352a565b5f604051808303815f87803b158015612484575f80fd5b505af1158015612496573d5f803e3d5ffd5b50505050505f60185f6101000a81548160ff02191690831515021790555050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f1935050505015801561251b573d5f803e3d5ffd5b5050565b5f80828461252d91906131b1565b905083811015612572576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612569906135cc565b60405180910390fd5b8091505092915050565b5f6125bd83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612103565b905092915050565b5f808311829061260b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126029190612696565b60405180910390fd5b505f8385612619919061335b565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61266882612626565b6126728185612630565b9350612682818560208601612640565b61268b8161264e565b840191505092915050565b5f6020820190508181035f8301526126ae818461265e565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6126e3826126ba565b9050919050565b6126f3816126d9565b81146126fd575f80fd5b50565b5f8135905061270e816126ea565b92915050565b5f819050919050565b61272681612714565b8114612730575f80fd5b50565b5f813590506127418161271d565b92915050565b5f806040838503121561275d5761275c6126b6565b5b5f61276a85828601612700565b925050602061277b85828601612733565b9150509250929050565b5f8115159050919050565b61279981612785565b82525050565b5f6020820190506127b25f830184612790565b92915050565b6127c181612714565b82525050565b5f6020820190506127da5f8301846127b8565b92915050565b5f805f606084860312156127f7576127f66126b6565b5b5f61280486828701612700565b935050602061281586828701612700565b925050604061282686828701612733565b9150509250925092565b5f60ff82169050919050565b61284581612830565b82525050565b5f60208201905061285e5f83018461283c565b92915050565b5f805f805f60a0868803121561287d5761287c6126b6565b5b5f61288a88828901612733565b955050602061289b88828901612733565b94505060406128ac88828901612733565b93505060606128bd88828901612733565b92505060806128ce88828901612733565b9150509295509295909350565b6128e4816126d9565b82525050565b5f6020820190506128fd5f8301846128db565b92915050565b5f60208284031215612918576129176126b6565b5b5f61292584828501612700565b91505092915050565b5f8060408385031215612944576129436126b6565b5b5f61295185828601612700565b925050602061296285828601612700565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6129a0602083612630565b91506129ab8261296c565b602082019050919050565b5f6020820190508181035f8301526129cd81612994565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115612a5657808604811115612a3257612a316129d4565b5b6001851615612a415780820291505b8081029050612a4f85612a01565b9450612a16565b94509492505050565b5f82612a6e5760019050612b29565b81612a7b575f9050612b29565b8160018114612a915760028114612a9b57612aca565b6001915050612b29565b60ff841115612aad57612aac6129d4565b5b8360020a915084821115612ac457612ac36129d4565b5b50612b29565b5060208310610133831016604e8410600b8410161715612aff5782820a905083811115612afa57612af96129d4565b5b612b29565b612b0c8484846001612a0d565b92509050818404811115612b2357612b226129d4565b5b81810290505b9392505050565b5f612b3a82612714565b9150612b4583612830565b9250612b727fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612a5f565b905092915050565b5f612b8482612714565b9150612b8f83612714565b9250828202612b9d81612714565b91508282048414831517612bb457612bb36129d4565b5b5092915050565b5f819050919050565b5f612bde612bd9612bd4846126ba565b612bbb565b6126ba565b9050919050565b5f612bef82612bc4565b9050919050565b5f612c0082612be5565b9050919050565b612c1081612bf6565b82525050565b5f604082019050612c295f830185612c07565b612c3660208301846127b8565b9392505050565b612c4681612785565b8114612c50575f80fd5b50565b5f81519050612c6181612c3d565b92915050565b5f60208284031215612c7c57612c7b6126b6565b5b5f612c8984828501612c53565b91505092915050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f612cc6601783612630565b9150612cd182612c92565b602082019050919050565b5f6020820190508181035f830152612cf381612cba565b9050919050565b5f81519050612d08816126ea565b92915050565b5f60208284031215612d2357612d226126b6565b5b5f612d3084828501612cfa565b91505092915050565b5f604082019050612d4c5f8301856128db565b612d5960208301846128db565b9392505050565b5f819050919050565b5f612d83612d7e612d7984612d60565b612bbb565b612714565b9050919050565b612d9381612d69565b82525050565b5f60c082019050612dac5f8301896128db565b612db960208301886127b8565b612dc66040830187612d8a565b612dd36060830186612d8a565b612de060808301856128db565b612ded60a08301846127b8565b979650505050505050565b5f81519050612e068161271d565b92915050565b5f805f60608486031215612e2357612e226126b6565b5b5f612e3086828701612df8565b9350506020612e4186828701612df8565b9250506040612e5286828701612df8565b9150509250925092565b5f604082019050612e6f5f8301856128db565b612e7c60208301846127b8565b9392505050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f612edd602483612630565b9150612ee882612e83565b604082019050919050565b5f6020820190508181035f830152612f0a81612ed1565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f612f6b602283612630565b9150612f7682612f11565b604082019050919050565b5f6020820190508181035f830152612f9881612f5f565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f612ff9602583612630565b915061300482612f9f565b604082019050919050565b5f6020820190508181035f83015261302681612fed565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f613087602383612630565b91506130928261302d565b604082019050919050565b5f6020820190508181035f8301526130b48161307b565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f613115602983612630565b9150613120826130bb565b604082019050919050565b5f6020820190508181035f83015261314281613109565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f61317d601983612630565b915061318882613149565b602082019050919050565b5f6020820190508181035f8301526131aa81613171565b9050919050565b5f6131bb82612714565b91506131c683612714565b92508282019050808211156131de576131dd6129d4565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f613218601a83612630565b9150613223826131e4565b602082019050919050565b5f6020820190508181035f8301526132458161320c565b9050919050565b5f61325682612714565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613288576132876129d4565b5b600182019050919050565b7f43412062616c616e63652073656c6c00000000000000000000000000000000005f82015250565b5f6132c7600f83612630565b91506132d282613293565b602082019050919050565b5f6020820190508181035f8301526132f4816132bb565b9050919050565b5f61330582612714565b915061331083612714565b9250828203905081811115613328576133276129d4565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61336582612714565b915061337083612714565b9250826133805761337f61332e565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f6133e5602183612630565b91506133f08261338b565b604082019050919050565b5f6020820190508181035f830152613412816133d9565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6134a5816126d9565b82525050565b5f6134b6838361349c565b60208301905092915050565b5f602082019050919050565b5f6134d882613473565b6134e2818561347d565b93506134ed8361348d565b805f5b8381101561351d57815161350488826134ab565b975061350f836134c2565b9250506001810190506134f0565b5085935050505092915050565b5f60a08201905061353d5f8301886127b8565b61354a6020830187612d8a565b818103604083015261355c81866134ce565b905061356b60608301856128db565b61357860808301846127b8565b9695505050505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f6135b6601b83612630565b91506135c182613582565b602082019050919050565b5f6020820190508181035f8301526135e3816135aa565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220a1ca9bf687eeec9d28bd5f931acbe4fa4ed3931bba1d2433e739bd6eebf9afc764736f6c634300081a0033