60c060405261dead600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550683635c9adc5dea00000600a55600a5460001962000066919062000a3a565b6000196200007591906200098b565b600b556040518060400160405280600981526020017f426f626f20436173680000000000000000000000000000000000000000000000815250600d9080519060200190620000c59291906200082c565b506040518060400160405280600481526020017f424f424f00000000000000000000000000000000000000000000000000000000815250600e9080519060200190620001139291906200082c565b506009600f60006101000a81548160ff021916908360ff16021790555060046010556010546011556001601255601254601355670de0b6b3a76400006014553480156200015f57600080fd5b50600062000172620007fb60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506001600281905550600b54600360006200022f620007fb60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015620002cd57600080fd5b505afa158015620002e2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003089190620008f3565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200036b57600080fd5b505afa15801562000380573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003a69190620008f3565b6040518363ffffffff1660e01b8152600401620003c592919062000941565b602060405180830381600087803b158015620003e057600080fd5b505af1158015620003f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200041b9190620008f3565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1660601b815250508073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b815250506001600660006200049e6200080360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160066000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506008600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506008309080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200078b620007fb60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600a54604051620007ec91906200096e565b60405180910390a35062000b19565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b8280546200083a9062000a04565b90600052602060002090601f0160209004810192826200085e5760008555620008aa565b82601f106200087957805160ff1916838001178555620008aa565b82800160010185558215620008aa579182015b82811115620008a95782518255916020019190600101906200088c565b5b509050620008b99190620008bd565b5090565b5b80821115620008d8576000816000905550600101620008be565b5090565b600081519050620008ed8162000aff565b92915050565b6000602082840312156200090657600080fd5b60006200091684828501620008dc565b91505092915050565b6200092a81620009c6565b82525050565b6200093b81620009fa565b82525050565b60006040820190506200095860008301856200091f565b6200096760208301846200091f565b9392505050565b600060208201905062000985600083018462000930565b92915050565b60006200099882620009fa565b9150620009a583620009fa565b925082821015620009bb57620009ba62000a72565b5b828203905092915050565b6000620009d382620009da565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000600282049050600182168062000a1d57607f821691505b6020821081141562000a345762000a3362000ad0565b5b50919050565b600062000a4782620009fa565b915062000a5483620009fa565b92508262000a675762000a6662000aa1565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b62000b0a81620009c6565b811462000b1657600080fd5b50565b60805160601c60a05160601c614d7962000b4560003960006114cd0152600061096a0152614d796000f3fe6080604052600436106102135760003560e01c806370a0823111610118578063a9059cbb116100a0578063d89135cd1161006f578063d89135cd146107d3578063dd62ed3e146107fe578063e26635031461083b578063ea2f0b3714610866578063f2fde38b1461088f5761021a565b8063a9059cbb14610719578063c0b0fda214610756578063cea2695814610781578063d543dbeb146107aa5761021a565b80638da5cb5b116100e75780638da5cb5b1461062f57806394e107841461065a57806395d89b411461068557806397a9d560146106b0578063a457c2d7146106dc5761021a565b806370a0823114610573578063715018a6146105b05780637d1db4a5146105c757806388f82020146105f25761021a565b80633bd5d1731161019b57806349bd5a5e1161016a57806349bd5a5e1461048e57806351fde4bb146104b957806352390c02146104e45780635342acb41461050d5780636bebaf971461054a5761021a565b80633bd5d173146103e85780633ccfd60b14610411578063437823ec146104285780634549b039146104515761021a565b806323b872dd116101e257806323b872dd146102dd5780632d8381191461031a578063313ce567146103575780633685d4191461038257806339509351146103ab5761021a565b806306fdde031461021f578063095ea7b31461024a5780631694505e1461028757806318160ddd146102b25761021a565b3661021a57005b600080fd5b34801561022b57600080fd5b506102346108b8565b604051610241919061475a565b60405180910390f35b34801561025657600080fd5b50610271600480360381019061026c919061402d565b61094a565b60405161027e9190614724565b60405180910390f35b34801561029357600080fd5b5061029c610968565b6040516102a9919061473f565b60405180910390f35b3480156102be57600080fd5b506102c761098c565b6040516102d4919061495c565b60405180910390f35b3480156102e957600080fd5b5061030460048036038101906102ff9190613fde565b610996565b6040516103119190614724565b60405180910390f35b34801561032657600080fd5b50610341600480360381019061033c9190614092565b610a6f565b60405161034e919061495c565b60405180910390f35b34801561036357600080fd5b5061036c610add565b60405161037991906149a0565b60405180910390f35b34801561038e57600080fd5b506103a960048036038101906103a49190613f79565b610af4565b005b3480156103b757600080fd5b506103d260048036038101906103cd919061402d565b610edb565b6040516103df9190614724565b60405180910390f35b3480156103f457600080fd5b5061040f600480360381019061040a9190614092565b610f8e565b005b34801561041d57600080fd5b50610426611109565b005b34801561043457600080fd5b5061044f600480360381019061044a9190613f79565b611357565b005b34801561045d57600080fd5b50610478600480360381019061047391906140e4565b611447565b604051610485919061495c565b60405180910390f35b34801561049a57600080fd5b506104a36114cb565b6040516104b091906146e0565b60405180910390f35b3480156104c557600080fd5b506104ce6114ef565b6040516104db919061495c565b60405180910390f35b3480156104f057600080fd5b5061050b60048036038101906105069190613f79565b6114f5565b005b34801561051957600080fd5b50610534600480360381019061052f9190613f79565b6117a9565b6040516105419190614724565b60405180910390f35b34801561055657600080fd5b50610571600480360381019061056c9190614092565b6117ff565b005b34801561057f57600080fd5b5061059a60048036038101906105959190613f79565b61189e565b6040516105a7919061495c565b60405180910390f35b3480156105bc57600080fd5b506105c5611989565b005b3480156105d357600080fd5b506105dc611adc565b6040516105e9919061495c565b60405180910390f35b3480156105fe57600080fd5b5061061960048036038101906106149190613f79565b611ae2565b6040516106269190614724565b60405180910390f35b34801561063b57600080fd5b50610644611b38565b60405161065191906146e0565b60405180910390f35b34801561066657600080fd5b5061066f611b61565b60405161067c919061495c565b60405180910390f35b34801561069157600080fd5b5061069a611b8c565b6040516106a7919061475a565b60405180910390f35b3480156106bc57600080fd5b506106c5611c1e565b6040516106d3929190614977565b60405180910390f35b3480156106e857600080fd5b5061070360048036038101906106fe919061402d565b611f69565b6040516107109190614724565b60405180910390f35b34801561072557600080fd5b50610740600480360381019061073b919061402d565b612036565b60405161074d9190614724565b60405180910390f35b34801561076257600080fd5b5061076b612054565b604051610778919061495c565b60405180910390f35b34801561078d57600080fd5b506107a860048036038101906107a39190614092565b61205a565b005b3480156107b657600080fd5b506107d160048036038101906107cc9190614092565b6120f9565b005b3480156107df57600080fd5b506107e86121bf565b6040516107f5919061495c565b60405180910390f35b34801561080a57600080fd5b5061082560048036038101906108209190613fa2565b6121f1565b604051610832919061495c565b60405180910390f35b34801561084757600080fd5b50610850612278565b60405161085d919061495c565b60405180910390f35b34801561087257600080fd5b5061088d60048036038101906108889190613f79565b612282565b005b34801561089b57600080fd5b506108b660048036038101906108b19190613f79565b612372565b005b6060600d80546108c790614b98565b80601f01602080910402602001604051908101604052809291908181526020018280546108f390614b98565b80156109405780601f1061091557610100808354040283529160200191610940565b820191906000526020600020905b81548152906001019060200180831161092357829003601f168201915b5050505050905090565b600061095e610957612534565b848461253c565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600a54905090565b60006109a3848484612707565b610a64846109af612534565b610a5f85604051806060016040528060288152602001614cf760289139600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610a15612534565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129ae9092919063ffffffff16565b61253c565b600190509392505050565b6000600b54821115610ab6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aad9061479c565b60405180910390fd5b6000610ac0611b61565b9050610ad58184612a1290919063ffffffff16565b915050919050565b6000600f60009054906101000a900460ff16905090565b610afc612534565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b809061489c565b60405180910390fd5b600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610c15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c0c9061481c565b60405180910390fd5b60005b600880549050811015610ed7578173ffffffffffffffffffffffffffffffffffffffff1660088281548110610c76577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610ec45760086001600880549050610cd19190614ab8565b81548110610d08577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660088281548110610d6d577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506008805480610e8a577f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690559055610ed7565b8080610ecf90614bca565b915050610c18565b5050565b6000610f84610ee8612534565b84610f7f8560056000610ef9612534565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a5c90919063ffffffff16565b61253c565b6001905092915050565b6000610f98612534565b9050600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611027576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101e9061493c565b60405180910390fd5b600061103283612aba565b5050505050905061108b81600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b1690919063ffffffff16565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506110e381600b54612b1690919063ffffffff16565b600b819055506110fe83600c54612a5c90919063ffffffff16565b600c81905550505050565b611111612534565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461119e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111959061489c565b60405180910390fd5b6002805414156111e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111da9061491c565b60405180910390fd5b6002808190555060003073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161122591906146e0565b60206040518083038186803b15801561123d57600080fd5b505afa158015611251573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061127591906140bb565b90503073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b81526004016112b29291906146fb565b602060405180830381600087803b1580156112cc57600080fd5b505af11580156112e0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113049190614069565b503373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f1935050505015801561134b573d6000803e3d6000fd5b50506001600281905550565b61135f612534565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e39061489c565b60405180910390fd5b6001600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600a5483111561148e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114859061483c565b60405180910390fd5b816114ae57600061149e84612aba565b50505050509050809150506114c5565b60006114b984612aba565b50505050915050809150505b92915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60105481565b6114fd612534565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461158a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115819061489c565b60405180910390fd5b600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611617576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160e9061481c565b60405180910390fd5b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411156116eb576116a7600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610a6f565b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506008819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b611807612534565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611894576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188b9061489c565b60405180910390fd5b8060108190555050565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561193957600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050611984565b611981600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610a6f565b90505b919050565b611991612534565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a1e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a159061489c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60145481565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000806000611b6e611c1e565b91509150611b858183612a1290919063ffffffff16565b9250505090565b6060600e8054611b9b90614b98565b80601f0160208091040260200160405190810160405280929190818152602001828054611bc790614b98565b8015611c145780601f10611be957610100808354040283529160200191611c14565b820191906000526020600020905b815481529060010190602001808311611bf757829003601f168201915b5050505050905090565b6000806000600b5490506000600a54905060005b600880549050811015611f2c57826003600060088481548110611c7e577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541180611d925750816004600060088481548110611d2a577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b15611da957600b54600a5494509450505050611f65565b611e5f6003600060088481548110611dea577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205484612b1690919063ffffffff16565b9250611f176004600060088481548110611ea2577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205483612b1690919063ffffffff16565b91508080611f2490614bca565b915050611c32565b50611f44600a54600b54612a1290919063ffffffff16565b821015611f5c57600b54600a54935093505050611f65565b81819350935050505b9091565b600061202c611f76612534565b8461202785604051806060016040528060258152602001614d1f6025913960056000611fa0612534565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129ae9092919063ffffffff16565b61253c565b6001905092915050565b600061204a612043612534565b8484612707565b6001905092915050565b60125481565b612062612534565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146120ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120e69061489c565b60405180910390fd5b8060128190555050565b612101612534565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461218e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121859061489c565b60405180910390fd5b6121b660646121a883600a54612b6090919063ffffffff16565b612a1290919063ffffffff16565b60148190555050565b60006121ec600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661189e565b905090565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000600c54905090565b61228a612534565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612317576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161230e9061489c565b60405180910390fd5b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b61237a612534565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612407576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123fe9061489c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612477576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161246e906147bc565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156125ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125a3906148fc565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561261c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612613906147dc565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516126fa919061495c565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612777576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161276e906148dc565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156127e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127de9061477c565b60405180910390fd5b6000811161282a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612821906148bc565b60405180910390fd5b612832611b38565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156128a05750612870611b38565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156128eb576014548111156128ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128e19061485c565b60405180910390fd5b5b600060019050600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806129925750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561299c57600090505b6129a884848484612bdb565b50505050565b60008383111582906129f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129ed919061475a565b60405180910390fd5b5060008385612a059190614ab8565b9050809150509392505050565b6000612a5483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612eec565b905092915050565b6000808284612a6b91906149d7565b905083811015612ab0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612aa7906147fc565b60405180910390fd5b8091505092915050565b6000806000806000806000806000612ad18a612f4f565b9250925092506000806000612aef8d8686612aea611b61565b612fa9565b9250925092508282828888889b509b509b509b509b509b5050505050505091939550919395565b6000612b5883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506129ae565b905092915050565b600080831415612b735760009050612bd5565b60008284612b819190614a5e565b9050828482612b909190614a2d565b14612bd0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bc79061487c565b60405180910390fd5b809150505b92915050565b80612be957612be8613032565b5b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612c8c5750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612ca157612c9c848484613075565b612ed8565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612d445750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612d5957612d5484848461335c565b612ed7565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612dfd5750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612e1257612e0d848484613643565b612ed6565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612eb45750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612ec957612ec4848484613895565b612ed5565b612ed4848484613643565b5b5b5b5b80612ee657612ee5613c11565b5b50505050565b60008083118290612f33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f2a919061475a565b60405180910390fd5b5060008385612f429190614a2d565b9050809150509392505050565b600080600080612f5e85613c25565b90506000612f6b86613c56565b90506000612f9482612f86858a612b1690919063ffffffff16565b612b1690919063ffffffff16565b90508083839550955095505050509193909250565b600080600080612fc28589612b6090919063ffffffff16565b90506000612fd98689612b6090919063ffffffff16565b90506000612ff08789612b6090919063ffffffff16565b905060006130198261300b8587612b1690919063ffffffff16565b612b1690919063ffffffff16565b9050838184965096509650505050509450945094915050565b600060105414801561304657506000601254145b1561305057613073565b601054601181905550601254601381905550600060108190555060006012819055505b565b60008060008060008061308787612aba565b9550955095509550955095506130e587600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b1690919063ffffffff16565b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061317a86600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b1690919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061320f85600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a5c90919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061325b81613c87565b6132658483613ed6565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167f61a114146810c6557dedd314dae835429358ca71b5ffdccc4ef651238ae0f7d4836040516132e4919061495c565b60405180910390a38773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051613349919061495c565b60405180910390a3505050505050505050565b60008060008060008061336e87612aba565b9550955095509550955095506133cc86600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b1690919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061346183600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a5c90919063ffffffff16565b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506134f685600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a5c90919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061354281613c87565b61354c8483613ed6565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167f61a114146810c6557dedd314dae835429358ca71b5ffdccc4ef651238ae0f7d4836040516135cb919061495c565b60405180910390a38773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051613630919061495c565b60405180910390a3505050505050505050565b60008060008060008061365587612aba565b9550955095509550955095506136b386600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b1690919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061374885600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a5c90919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061379481613c87565b61379e8483613ed6565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167f61a114146810c6557dedd314dae835429358ca71b5ffdccc4ef651238ae0f7d48360405161381d919061495c565b60405180910390a38773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051613882919061495c565b60405180910390a3505050505050505050565b6000806000806000806138a787612aba565b95509550955095509550955061390587600460008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b1690919063ffffffff16565b600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061399a86600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612b1690919063ffffffff16565b600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613a2f83600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a5c90919063ffffffff16565b600460008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613ac485600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a5c90919063ffffffff16565b600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613b1081613c87565b613b1a8483613ed6565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167f61a114146810c6557dedd314dae835429358ca71b5ffdccc4ef651238ae0f7d483604051613b99919061495c565b60405180910390a38773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051613bfe919061495c565b60405180910390a3505050505050505050565b601154601081905550601354601281905550565b6000613c4f6064613c4160105485612b6090919063ffffffff16565b612a1290919063ffffffff16565b9050919050565b6000613c806064613c7260125485612b6090919063ffffffff16565b612a1290919063ffffffff16565b9050919050565b6000613c91611b61565b90506000613ca88284612b6090919063ffffffff16565b9050613d1e8160036000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a5c90919063ffffffff16565b60036000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060076000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613ed157613e6b8360046000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612a5c90919063ffffffff16565b60046000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b505050565b613eeb82600b54612b1690919063ffffffff16565b600b81905550613f0681600c54612a5c90919063ffffffff16565b600c819055505050565b600081359050613f1f81614cb1565b92915050565b600081359050613f3481614cc8565b92915050565b600081519050613f4981614cc8565b92915050565b600081359050613f5e81614cdf565b92915050565b600081519050613f7381614cdf565b92915050565b600060208284031215613f8b57600080fd5b6000613f9984828501613f10565b91505092915050565b60008060408385031215613fb557600080fd5b6000613fc385828601613f10565b9250506020613fd485828601613f10565b9150509250929050565b600080600060608486031215613ff357600080fd5b600061400186828701613f10565b935050602061401286828701613f10565b925050604061402386828701613f4f565b9150509250925092565b6000806040838503121561404057600080fd5b600061404e85828601613f10565b925050602061405f85828601613f4f565b9150509250929050565b60006020828403121561407b57600080fd5b600061408984828501613f3a565b91505092915050565b6000602082840312156140a457600080fd5b60006140b284828501613f4f565b91505092915050565b6000602082840312156140cd57600080fd5b60006140db84828501613f64565b91505092915050565b600080604083850312156140f757600080fd5b600061410585828601613f4f565b925050602061411685828601613f25565b9150509250929050565b61412981614aec565b82525050565b61413881614afe565b82525050565b61414781614b41565b82525050565b6000614158826149bb565b61416281856149c6565b9350614172818560208601614b65565b61417b81614ca0565b840191505092915050565b60006141936023836149c6565b91507f45524332303a207472616e7366657220746f20746865207a65726f206164647260008301527f65737300000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006141f9602a836149c6565b91507f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008301527f65666c656374696f6e73000000000000000000000000000000000000000000006020830152604082019050919050565b600061425f6026836149c6565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006142c56022836149c6565b91507f45524332303a20617070726f766520746f20746865207a65726f20616464726560008301527f73730000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061432b601b836149c6565b91507f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006000830152602082019050919050565b600061436b601b836149c6565b91507f4163636f756e7420697320616c7265616479206578636c7564656400000000006000830152602082019050919050565b60006143ab601f836149c6565b91507f416d6f756e74206d757374206265206c657373207468616e20737570706c79006000830152602082019050919050565b60006143eb6028836149c6565b91507f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008301527f78416d6f756e742e0000000000000000000000000000000000000000000000006020830152604082019050919050565b60006144516021836149c6565b91507f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008301527f77000000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006144b76020836149c6565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b60006144f76029836149c6565b91507f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008301527f7468616e207a65726f00000000000000000000000000000000000000000000006020830152604082019050919050565b600061455d6025836149c6565b91507f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008301527f64726573730000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006145c36024836149c6565b91507f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008301527f72657373000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000614629601f836149c6565b91507f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006000830152602082019050919050565b6000614669602c836149c6565b91507f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460008301527f6869732066756e6374696f6e00000000000000000000000000000000000000006020830152604082019050919050565b6146cb81614b2a565b82525050565b6146da81614b34565b82525050565b60006020820190506146f56000830184614120565b92915050565b60006040820190506147106000830185614120565b61471d60208301846146c2565b9392505050565b6000602082019050614739600083018461412f565b92915050565b6000602082019050614754600083018461413e565b92915050565b60006020820190508181036000830152614774818461414d565b905092915050565b6000602082019050818103600083015261479581614186565b9050919050565b600060208201905081810360008301526147b5816141ec565b9050919050565b600060208201905081810360008301526147d581614252565b9050919050565b600060208201905081810360008301526147f5816142b8565b9050919050565b600060208201905081810360008301526148158161431e565b9050919050565b600060208201905081810360008301526148358161435e565b9050919050565b600060208201905081810360008301526148558161439e565b9050919050565b60006020820190508181036000830152614875816143de565b9050919050565b6000602082019050818103600083015261489581614444565b9050919050565b600060208201905081810360008301526148b5816144aa565b9050919050565b600060208201905081810360008301526148d5816144ea565b9050919050565b600060208201905081810360008301526148f581614550565b9050919050565b60006020820190508181036000830152614915816145b6565b9050919050565b600060208201905081810360008301526149358161461c565b9050919050565b600060208201905081810360008301526149558161465c565b9050919050565b600060208201905061497160008301846146c2565b92915050565b600060408201905061498c60008301856146c2565b61499960208301846146c2565b9392505050565b60006020820190506149b560008301846146d1565b92915050565b600081519050919050565b600082825260208201905092915050565b60006149e282614b2a565b91506149ed83614b2a565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115614a2257614a21614c13565b5b828201905092915050565b6000614a3882614b2a565b9150614a4383614b2a565b925082614a5357614a52614c42565b5b828204905092915050565b6000614a6982614b2a565b9150614a7483614b2a565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614aad57614aac614c13565b5b828202905092915050565b6000614ac382614b2a565b9150614ace83614b2a565b925082821015614ae157614ae0614c13565b5b828203905092915050565b6000614af782614b0a565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000614b4c82614b53565b9050919050565b6000614b5e82614b0a565b9050919050565b60005b83811015614b83578082015181840152602081019050614b68565b83811115614b92576000848401525b50505050565b60006002820490506001821680614bb057607f821691505b60208210811415614bc457614bc3614c71565b5b50919050565b6000614bd582614b2a565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415614c0857614c07614c13565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b614cba81614aec565b8114614cc557600080fd5b50565b614cd181614afe565b8114614cdc57600080fd5b50565b614ce881614b2a565b8114614cf357600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220b2094acc68b73a2004afaf6b1573e32566a3fe371652603bf7eee4cd071160ba64736f6c63430008000033