6080604052734f53cdec355e42b3a68baadd26606b7f82fdb0f7600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506103e8600455731011f61df0e2ad67e269f4108098c79e71868e00600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600a60006101000a81548160ff0219169083151502179055506040518060400160405280600d81526020017f457468657265756d204361736800000000000000000000000000000000000000815250600b90805190602001906200011c92919062000dee565b506040518060400160405280600581526020017f6543617368000000000000000000000000000000000000000000000000000000815250600c90805190602001906200016a92919062000dee565b506009600d60006101000a81548160ff021916908360ff160217905550620001aa6032674563918244f400006200055360201b620019d71790919060201c565b600f556000601060006101000a81548160ff02191690831515021790555073cd5312d086f078d1554e8813c27cf6c9d1c3d9b3601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507355e2adaeb2798ddc474311ad98b23d0b62c1ebd8601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600060175563688651aa6018556000601960006101000a81548160ff021916908315150217905550620186a0601a55348015620002ae57600080fd5b506000620002c1620005a560201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601060016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620003d2620005ad60201b60201c565b674563918244f40000601560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160146000620004346200087060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055503073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef674563918244f400006040516200054591906200108e565b60405180910390a36200135b565b60006200059d83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506200089960201b60201c565b905092915050565b600033905090565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600067ffffffffffffffff811115620006915762000690620012c9565b5b604051908082528060200260200182016040528015620006c05781602001602082028036833780820191505090505b5060069080519060200190620006d892919062000e7f565b50600067ffffffffffffffff811115620006f757620006f6620012c9565b5b604051908082528060200260200182016040528015620007265781602001602082028036833780820191505090505b50600790805190602001906200073e92919062000ed8565b50600660009080600181540180825580915050600190039060005260206000200160009091909190915055600760009080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000803600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166004546200090160201b60201c565b6200082b73d70417b5a98130aacab8b4760bfed355190e7c52611c206200090160201b60201c565b6200085373532ad982e8f0fc4bfa8ace9f6618459e570fde436103206200090160201b60201c565b6001600a60006101000a81548160ff021916908315150217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008083118290620008e3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008da919062001026565b60405180910390fd5b5060008385620008f4919062001124565b9050809150509392505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1662000948620005a560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620009a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000998906200106c565b60405180910390fd5b600a60009054906101000a900460ff161562000a7a57600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000a7957600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1662000a57620005a560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000a7857600080fd5b5b5b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600081141562000bfe5761290462000ae78360095462000cd060201b62001a211790919060201c565b111562000af357600080fd5b60068290806001815401808255809150506001900390600052602060002001600090919091909150556007839080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160068054905062000b9391906200115c565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555062000bf28260095462000cd060201b62001a211790919060201c565b60098190555062000ccb565b60006006828154811062000c175762000c166200129a565b5b9060005260206000200154905061290462000c5c8262000c488660095462000cd060201b62001a211790919060201c565b62000d3360201b62001a7f1790919060201c565b111562000c6857600080fd5b826006838154811062000c805762000c7f6200129a565b5b906000526020600020018190555062000cc38162000caf8560095462000cd060201b62001a211790919060201c565b62000d3360201b62001a7f1790919060201c565b600981905550505b505050565b600080828462000ce19190620010c7565b90508381101562000d29576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000d20906200104a565b60405180910390fd5b8091505092915050565b600062000d7d83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525062000d8560201b60201c565b905092915050565b600083831115829062000dd0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000dc7919062001026565b60405180910390fd5b506000838562000de191906200115c565b9050809150509392505050565b82805462000dfc90620011d7565b90600052602060002090601f01602090048101928262000e20576000855562000e6c565b82601f1062000e3b57805160ff191683800117855562000e6c565b8280016001018555821562000e6c579182015b8281111562000e6b57825182559160200191906001019062000e4e565b5b50905062000e7b919062000f67565b5090565b82805482825590600052602060002090810192821562000ec5579160200282015b8281111562000ec4578251829062ffffff1690559160200191906001019062000ea0565b5b50905062000ed4919062000f67565b5090565b82805482825590600052602060002090810192821562000f54579160200282015b8281111562000f535782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055509160200191906001019062000ef9565b5b50905062000f63919062000f67565b5090565b5b8082111562000f8257600081600090555060010162000f68565b5090565b600062000f9382620010ab565b62000f9f8185620010b6565b935062000fb1818560208601620011a1565b62000fbc81620012f8565b840191505092915050565b600062000fd6601b83620010b6565b915062000fe38262001309565b602082019050919050565b600062000ffd602083620010b6565b91506200100a8262001332565b602082019050919050565b620010208162001197565b82525050565b6000602082019050818103600083015262001042818462000f86565b905092915050565b60006020820190508181036000830152620010658162000fc7565b9050919050565b60006020820190508181036000830152620010878162000fee565b9050919050565b6000602082019050620010a5600083018462001015565b92915050565b600081519050919050565b600082825260208201905092915050565b6000620010d48262001197565b9150620010e18362001197565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156200111957620011186200120d565b5b828201905092915050565b6000620011318262001197565b91506200113e8362001197565b9250826200115157620011506200123c565b5b828204905092915050565b6000620011698262001197565b9150620011768362001197565b9250828210156200118c576200118b6200120d565b5b828203905092915050565b6000819050919050565b60005b83811015620011c1578082015181840152602081019050620011a4565b83811115620011d1576000848401525b50505050565b60006002820490506001821680620011f057607f821691505b602082108114156200120757620012066200126b565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b61434c806200136b6000396000f3fe6080604052600436106101445760003560e01c80638da5cb5b116100b6578063d0040d701161006f578063d0040d701461048d578063dd62ed3e146104b6578063e8078d94146104f3578063f2fde38b1461050a578063f37c4bce14610533578063f9f92be41461055c5761014b565b80638da5cb5b1461036b57806395d89b411461039657806398d5a5cb146103c1578063a9059cbb146103ea578063ab9562fe14610427578063c7ab8d9d146104505761014b565b8063313ce56711610108578063313ce5671461024957806353477d291461027457806354486ac31461029d57806370a08231146102c857806385b12c7c146103055780638a13792e1461032e5761014b565b806306fdde0314610150578063095ea7b31461017b57806318160ddd146101b85780631c815b49146101e357806323b872dd1461020c5761014b565b3661014b57005b600080fd5b34801561015c57600080fd5b50610165610585565b6040516101729190613a21565b60405180910390f35b34801561018757600080fd5b506101a2600480360381019061019d9190613553565b610617565b6040516101af9190613a06565b60405180910390f35b3480156101c457600080fd5b506101cd610635565b6040516101da9190613ba3565b60405180910390f35b3480156101ef57600080fd5b5061020a60048036038101906102059190613480565b610645565b005b34801561021857600080fd5b50610233600480360381019061022e9190613500565b61074a565b6040516102409190613a06565b60405180910390f35b34801561025557600080fd5b5061025e610823565b60405161026b9190613c18565b60405180910390f35b34801561028057600080fd5b5061029b600480360381019061029691906133f9565b61083a565b005b3480156102a957600080fd5b506102b261092a565b6040516102bf9190613ba3565b60405180910390f35b3480156102d457600080fd5b506102ef60048036038101906102ea91906133f9565b610930565b6040516102fc9190613ba3565b60405180910390f35b34801561031157600080fd5b5061032c600480360381019061032791906135c0565b610979565b005b34801561033a57600080fd5b5061035560048036038101906103509190613453565b610a2a565b6040516103629190613ba3565b60405180910390f35b34801561037757600080fd5b50610380610b2d565b60405161038d91906138ca565b60405180910390f35b3480156103a257600080fd5b506103ab610b56565b6040516103b89190613a21565b60405180910390f35b3480156103cd57600080fd5b506103e860048036038101906103e391906133f9565b610be8565b005b3480156103f657600080fd5b50610411600480360381019061040c9190613553565b610cd8565b60405161041e9190613a06565b60405180910390f35b34801561043357600080fd5b5061044e60048036038101906104499190613480565b610cf6565b005b34801561045c57600080fd5b50610477600480360381019061047291906133f9565b610e32565b6040516104849190613a06565b60405180910390f35b34801561049957600080fd5b506104b460048036038101906104af91906133f9565b610e88565b005b3480156104c257600080fd5b506104dd60048036038101906104d891906134c0565b610f78565b6040516104ea9190613ba3565b60405180910390f35b3480156104ff57600080fd5b50610508610fff565b005b34801561051657600080fd5b50610531600480360381019061052c91906133f9565b6115dc565b005b34801561053f57600080fd5b5061055a600480360381019061055591906133f9565b61172e565b005b34801561056857600080fd5b50610583600480360381019061057e91906133f9565b6118e7565b005b6060600b805461059490613e49565b80601f01602080910402602001604051908101604052809291908181526020018280546105c090613e49565b801561060d5780601f106105e25761010080835404028352916020019161060d565b820191906000526020600020905b8154815290600101906020018083116105f057829003601f168201915b5050505050905090565b600061062b610624611ac9565b8484611ad1565b6001905092915050565b6000674563918244f40000905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610684611ac9565b73ffffffffffffffffffffffffffffffffffffffff16146106da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106d190613b03565b60405180910390fd5b6106e48282611c9c565b6000811115610746576001601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b5050565b600061075784848461201f565b61081884610763611ac9565b610813856040518060600160405280602881526020016142ef60289139601660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006107c9611ac9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125ac9092919063ffffffff16565b611ad1565b600190509392505050565b6000600d60009054906101000a900460ff16905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610879611ac9565b73ffffffffffffffffffffffffffffffffffffffff16146108cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108c690613b03565b60405180910390fd5b6000601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60095481565b6000601560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166109b8611ac9565b73ffffffffffffffffffffffffffffffffffffffff1614610a0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a0590613b03565b60405180910390fd5b610a218142611a2190919063ffffffff16565b60188190555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610a6c611ac9565b73ffffffffffffffffffffffffffffffffffffffff1614610ac2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ab990613b03565b60405180910390fd5b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060068181548110610b1a57610b19613f51565b5b9060005260206000200154915050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600c8054610b6590613e49565b80601f0160208091040260200160405190810160405280929190818152602001828054610b9190613e49565b8015610bde5780601f10610bb357610100808354040283529160200191610bde565b820191906000526020600020905b815481529060010190602001808311610bc157829003601f168201915b5050505050905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610c27611ac9565b73ffffffffffffffffffffffffffffffffffffffff1614610c7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c7490613b03565b60405180910390fd5b6000601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000610cec610ce5611ac9565b848461201f565b6001905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610d35611ac9565b73ffffffffffffffffffffffffffffffffffffffff1614610d8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8290613b03565b60405180910390fd5b610db8600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000611c9c565b81600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600481905550610e2e600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600454611c9c565b5050565b6000601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610ec7611ac9565b73ffffffffffffffffffffffffffffffffffffffff1614610f1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1490613b03565b60405180910390fd5b6001601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661103e611ac9565b73ffffffffffffffffffffffffffffffffffffffff1614611094576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108b90613b03565b60405180910390fd5b601060009054906101000a900460ff16156110e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110db90613a63565b60405180910390fd5b60004790506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061117830600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16674563918244f40000611ad1565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156111be57600080fd5b505afa1580156111d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111f69190613426565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561125857600080fd5b505afa15801561126c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112909190613426565b6040518363ffffffff1660e01b81526004016112ad9291906138e5565b602060405180830381600087803b1580156112c757600080fd5b505af11580156112db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112ff9190613426565b600d60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719833061138830610930565b60008030426040518863ffffffff1660e01b81526004016113ae969594939291906139a5565b6060604051808303818588803b1580156113c757600080fd5b505af11580156113db573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061140091906135ed565b505050600d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016114a2929190613945565b602060405180830381600087803b1580156114bc57600080fd5b505af11580156114d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114f49190613593565b50601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d704363a600d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661156c6276a70042611a2190919063ffffffff16565b336040518463ffffffff1660e01b815260040161158b9392919061396e565b600060405180830381600087803b1580156115a557600080fd5b505af11580156115b9573d6000803e3d6000fd5b505050506001601060006101000a81548160ff0219169083151502179055505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661161b611ac9565b73ffffffffffffffffffffffffffffffffffffffff1614611671576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166890613b03565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561179857600080fd5b505af11580156117ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117d09190613426565b73ffffffffffffffffffffffffffffffffffffffff166117ee611ac9565b73ffffffffffffffffffffffffffffffffffffffff1614806118645750600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661184c611ac9565b73ffffffffffffffffffffffffffffffffffffffff16145b6118a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189a90613a83565b60405180910390fd5b80600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611926611ac9565b73ffffffffffffffffffffffffffffffffffffffff161461197c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161197390613b03565b60405180910390fd5b6001601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000611a1983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612610565b905092915050565b6000808284611a309190613c88565b905083811015611a75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a6c90613ac3565b60405180910390fd5b8091505092915050565b6000611ac183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506125ac565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611b41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3890613b63565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611bb1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ba890613aa3565b60405180910390fd5b80601660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611c8f9190613ba3565b60405180910390a3505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611cdb611ac9565b73ffffffffffffffffffffffffffffffffffffffff1614611d31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d2890613b03565b60405180910390fd5b600a60009054906101000a900460ff1615611dff57600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611dfe57600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611ddd611ac9565b73ffffffffffffffffffffffffffffffffffffffff1614611dfd57600080fd5b5b5b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000811415611f7057612904611e6483600954611a2190919063ffffffff16565b1115611e6f57600080fd5b60068290806001815401808255809150506001900390600052602060002001600090919091909150556007839080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600680549050611f0d9190613d69565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611f6582600954611a2190919063ffffffff16565b60098190555061201a565b600060068281548110611f8657611f85613f51565b5b90600052602060002001549050612904611fbd82611faf86600954611a2190919063ffffffff16565b611a7f90919063ffffffff16565b1115611fc857600080fd5b8260068381548110611fdd57611fdc613f51565b5b90600052602060002001819055506120128161200485600954611a2190919063ffffffff16565b611a7f90919063ffffffff16565b600981905550505b505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561208f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161208690613b43565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156120ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120f690613a43565b60405180910390fd5b60008111612142576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161213990613b23565b60405180910390fd5b601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156121e65750601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561223c5750601360003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b61224557600080fd5b61224f8383612673565b801561225d57506018544210155b1561251a57601060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166312bdf42383600d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16326040518463ffffffff1660e01b81526004016122e39392919061390e565b602060405180830381600087803b1580156122fd57600080fd5b505af1158015612311573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123359190613593565b15612375576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161236c90613b83565b60405180910390fd5b601060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166312bdf42384600d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16326040518463ffffffff1660e01b81526004016123f69392919061390e565b602060405180830381600087803b15801561241057600080fd5b505af1158015612424573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124489190613593565b15612488576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161247f90613b83565b60405180910390fd5b601060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663155d0ed98484326040518463ffffffff1660e01b81526004016124e79392919061390e565b600060405180830381600087803b15801561250157600080fd5b505af1158015612515573d6000803e3d6000fd5b505050505b61252382612726565b1561253f57600f5461253483610930565b1061253e57600080fd5b5b600061254b84846127fd565b1561259a5760185442101561255f57600080fd5b61256984846128a9565b15612583576125766129b4565b82111561258257600080fd5b5b61258e848484612a05565b905061259984612b09565b5b6125a684848484612b3a565b50505050565b60008383111582906125f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125eb9190613a21565b60405180910390fd5b50600083856126039190613d69565b9050809150509392505050565b60008083118290612657576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161264e9190613a21565b60405180910390fd5b50600083856126669190613cde565b9050809150509392505050565b6000600d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148061271e5750600d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b905092915050565b6000600d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156127d45750600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156127f657506127f2610e10601854611a2190919063ffffffff16565b4211155b9050919050565b6000601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806128a05750601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15905092915050565b6000600d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156129565750600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156129ac5750601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b905092915050565b60006129cd611194601854611a2190919063ffffffff16565b42116129f6576129ef6064674563918244f400006119d790919063ffffffff16565b9050612a02565b674563918244f4000090505b90565b60008060009050601460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612aad5750601460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612abb5780915050612b02565b612afb612aec612ac9612d7c565b612ade601a54876119d790919063ffffffff16565b612d8690919063ffffffff16565b82611a2190919063ffffffff16565b9050809150505b9392505050565b612b1281612e01565b15612b37576000612b2230610930565b9050612b2d81612e75565b612b356130fd565b505b50565b6000612b4f8284611a7f90919063ffffffff16565b9050612ba383601560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a7f90919063ffffffff16565b601560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612c3881601560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a2190919063ffffffff16565b601560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612ccd82601560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a2190919063ffffffff16565b601560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612d6d9190613ba3565b60405180910390a35050505050565b6000600954905090565b600080831415612d995760009050612dfb565b60008284612da79190613d0f565b9050828482612db69190613cde565b14612df6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ded90613ae3565b60405180910390fd5b809150505b92915050565b6000601960009054906101000a900460ff16158015612e6e5750600d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b9050919050565b6001601960006101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115612ead57612eac613f80565b5b604051908082528060200260200182016040528015612edb5781602001602082028036833780820191505090505b5090503081600081518110612ef357612ef2613f51565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015612f9557600080fd5b505afa158015612fa9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fcd9190613426565b81600181518110612fe157612fe0613f51565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061304830600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611ad1565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016130ac959493929190613bbe565b600060405180830381600087803b1580156130c657600080fd5b505af11580156130da573d6000803e3d6000fd5b50505050506000601960006101000a81548160ff02191690831515021790555050565b60004790506017548111613111575061315c565b600061312860175483611a7f90919063ffffffff16565b9050600061313461315e565b905060018110156131475750505061315c565b6131518282613188565b476017819055505050505b565b6000806000905061317f613170612d7c565b82611a2190919063ffffffff16565b90508091505090565b6000600190505b600680549050811015613376576000600682815481106131b2576131b1613f51565b5b906000526020600020015490506000600783815481106131d5576131d4613f51565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060006132298561321b8589612d8690919063ffffffff16565b6119d790919063ffffffff16565b90506001811115613360578173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561327a573d6000803e3d6000fd5b50600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561335f57600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6b55f25826040518263ffffffff1660e01b815260040161332c9190613ba3565b600060405180830381600087803b15801561334657600080fd5b505af115801561335a573d6000803e3d6000fd5b505050505b5b505050808061336e90613e7b565b91505061318f565b505050565b60008135905061338a81614292565b92915050565b60008151905061339f81614292565b92915050565b6000813590506133b4816142a9565b92915050565b6000815190506133c9816142c0565b92915050565b6000813590506133de816142d7565b92915050565b6000815190506133f3816142d7565b92915050565b60006020828403121561340f5761340e613faf565b5b600061341d8482850161337b565b91505092915050565b60006020828403121561343c5761343b613faf565b5b600061344a84828501613390565b91505092915050565b60006020828403121561346957613468613faf565b5b6000613477848285016133a5565b91505092915050565b6000806040838503121561349757613496613faf565b5b60006134a5858286016133a5565b92505060206134b6858286016133cf565b9150509250929050565b600080604083850312156134d7576134d6613faf565b5b60006134e58582860161337b565b92505060206134f68582860161337b565b9150509250929050565b60008060006060848603121561351957613518613faf565b5b60006135278682870161337b565b93505060206135388682870161337b565b9250506040613549868287016133cf565b9150509250925092565b6000806040838503121561356a57613569613faf565b5b60006135788582860161337b565b9250506020613589858286016133cf565b9150509250929050565b6000602082840312156135a9576135a8613faf565b5b60006135b7848285016133ba565b91505092915050565b6000602082840312156135d6576135d5613faf565b5b60006135e4848285016133cf565b91505092915050565b60008060006060848603121561360657613605613faf565b5b6000613614868287016133e4565b9350506020613625868287016133e4565b9250506040613636868287016133e4565b9150509250925092565b600061364c8383613658565b60208301905092915050565b61366181613d9d565b82525050565b61367081613d9d565b82525050565b600061368182613c43565b61368b8185613c66565b935061369683613c33565b8060005b838110156136c75781516136ae8882613640565b97506136b983613c59565b92505060018101905061369a565b5085935050505092915050565b6136dd81613dc1565b82525050565b6136ec81613e04565b82525050565b60006136fd82613c4e565b6137078185613c77565b9350613717818560208601613e16565b61372081613fb4565b840191505092915050565b6000613738602383613c77565b915061374382613fc5565b604082019050919050565b600061375b601883613c77565b915061376682614014565b602082019050919050565b600061377e600c83613c77565b91506137898261403d565b602082019050919050565b60006137a1602283613c77565b91506137ac82614066565b604082019050919050565b60006137c4601b83613c77565b91506137cf826140b5565b602082019050919050565b60006137e7602183613c77565b91506137f2826140de565b604082019050919050565b600061380a602083613c77565b91506138158261412d565b602082019050919050565b600061382d602983613c77565b915061383882614156565b604082019050919050565b6000613850602583613c77565b915061385b826141a5565b604082019050919050565b6000613873602483613c77565b915061387e826141f4565b604082019050919050565b6000613896602683613c77565b91506138a182614243565b604082019050919050565b6138b581613ded565b82525050565b6138c481613df7565b82525050565b60006020820190506138df6000830184613667565b92915050565b60006040820190506138fa6000830185613667565b6139076020830184613667565b9392505050565b60006060820190506139236000830186613667565b6139306020830185613667565b61393d6040830184613667565b949350505050565b600060408201905061395a6000830185613667565b61396760208301846138ac565b9392505050565b60006060820190506139836000830186613667565b61399060208301856138ac565b61399d6040830184613667565b949350505050565b600060c0820190506139ba6000830189613667565b6139c760208301886138ac565b6139d460408301876136e3565b6139e160608301866136e3565b6139ee6080830185613667565b6139fb60a08301846138ac565b979650505050505050565b6000602082019050613a1b60008301846136d4565b92915050565b60006020820190508181036000830152613a3b81846136f2565b905092915050565b60006020820190508181036000830152613a5c8161372b565b9050919050565b60006020820190508181036000830152613a7c8161374e565b9050919050565b60006020820190508181036000830152613a9c81613771565b9050919050565b60006020820190508181036000830152613abc81613794565b9050919050565b60006020820190508181036000830152613adc816137b7565b9050919050565b60006020820190508181036000830152613afc816137da565b9050919050565b60006020820190508181036000830152613b1c816137fd565b9050919050565b60006020820190508181036000830152613b3c81613820565b9050919050565b60006020820190508181036000830152613b5c81613843565b9050919050565b60006020820190508181036000830152613b7c81613866565b9050919050565b60006020820190508181036000830152613b9c81613889565b9050919050565b6000602082019050613bb860008301846138ac565b92915050565b600060a082019050613bd360008301886138ac565b613be060208301876136e3565b8181036040830152613bf28186613676565b9050613c016060830185613667565b613c0e60808301846138ac565b9695505050505050565b6000602082019050613c2d60008301846138bb565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000613c9382613ded565b9150613c9e83613ded565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613cd357613cd2613ec4565b5b828201905092915050565b6000613ce982613ded565b9150613cf483613ded565b925082613d0457613d03613ef3565b5b828204905092915050565b6000613d1a82613ded565b9150613d2583613ded565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613d5e57613d5d613ec4565b5b828202905092915050565b6000613d7482613ded565b9150613d7f83613ded565b925082821015613d9257613d91613ec4565b5b828203905092915050565b6000613da882613dcd565b9050919050565b6000613dba82613dcd565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000613e0f82613ded565b9050919050565b60005b83811015613e34578082015181840152602081019050613e19565b83811115613e43576000848401525b50505050565b60006002820490506001821680613e6157607f821691505b60208210811415613e7557613e74613f22565b5b50919050565b6000613e8682613ded565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415613eb957613eb8613ec4565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f4c697175696469747920616c72656164792061646465642e0000000000000000600082015250565b7f556e617574686f72697a65640000000000000000000000000000000000000000600082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f42656570204265657020426f6f702c20596f752772652061207069656365206f60008201527f6620706f6f700000000000000000000000000000000000000000000000000000602082015250565b61429b81613d9d565b81146142a657600080fd5b50565b6142b281613daf565b81146142bd57600080fd5b50565b6142c981613dc1565b81146142d457600080fd5b50565b6142e081613ded565b81146142eb57600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122060ef483c47f6ea5e4bd6bf3267922c9af2ce1bdeda610fa86428c5a5431ccd6664736f6c63430008070033